So far, abs, add, norm, normsq, and sum are supported. To get them
to work, also implements the following:
* refactor: Use ReturnType function rather than just accessing .returns
* feat: distinguish marking a function as a behavior from its return type
* refactor: Rename `NotAType` to `Unknown` because it must be made closer
to a bona fide type for the sake of inhomogeneous vectors
* feat: make resolving a TypeDispatcher method on a type vector including
`Unknown` into a no-op; that simplifies a number of generic behaviors
* feat: add `haszero` method parallel to `hasnan`
* feat: track the Vector nesting depth of Vector specializations
Toward its goal, this commit also:
* Adds a new section of logical functions, and defines `not`, `and`,
`or` for all current types.
* Extends `OneOf` choice/union type to allow argument types that are
themselves `OneOf` types.
* Adds a readable .toString() method for TypePatterns.
* Defines negate (as a no-op) and isnan (as always true) for the Undefined
type
* Extends comparisons to the Undefined type (to handle comparing vectors
of different lengths)