Refactor manifestation setup

* use a little meta-programming for the setup
* pass in the methods as a hash of lambdas
Give a bit more background in the README