Add support for dynamic templates in the mapping DSL

I added some basic syntax around defining dynamic templates on the root object. As I was finishing up implementing this I realised you could actually just do this by adding an extra argument to the mapping call so maybe un-necessary, if so feel free to ignore.

Had a go at doing a basic test for it too, I'm not too familiar with this testing environment so let me know if there's anything I can change or make cleaner there.

Cheers