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.
Could you please text here what would you like to see there. I'd just copy&paste it. Thanks