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.
It looks like you're trying to clarify, but this just sounds more confusing. =)