Add support for composite

Fixes #225.

Only supports file paths for now. Added tests and modified the relevant documentation.

I had to make a small change to geometry() to make the API a bit cleaner - without it, you would have to manually get the size of the base image to position the overlay. If we encounter a string in the first argument for geometry, we assume it's a custom geometry command.

Maybe we could add a different method for this, but I think this solution works fine.