Allow constructors to be named

`Compose` and `instance.extend()` can take an optional `name` as their first argument. The resulting constructor is created in such a way that its `.name` property is the specified name, which makes debugging and heap inspection easier.

The new default name is `ComposedConstructor`, instead of the too generic `Constructor`.

If `Compose.debuggableName` exists, it's called with the name as determined so far, and the return value (if any) is used as the actual name. Implementations could inspect the stack to determine a name for the constructor.