stamp.compose() implementation

I decided that it is not a good idea to modify 'this' while composing two stamps. So, the `stamp.compose()` creates a new stamp unlike the 'methods', 'state', and 'enclose' functions. All that is described in the docs.

Also minor optimisations were made. See the commit log messages.
None of these examples produce a stamp. They all produce an object, because they all call `.create()` at the end.