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
Adds all of the pocomath functions on Complex that do not depend on any unimplemented types or config properties, except quotient and roundquotient, where the design is murky. To get this working, adds some additional features:
* Allows conversions to generic types, with the matched type
determined from the return value of the built convertor
* Adds predicate-based type patterns
* Adds conversion from any non-complex type T to Complex(T)
* Adds check for recursive loops in resolve (a key/signature depending on itself)
Reviewed-on: #24
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>