Method based operations

I'm not happy about the API as-is, but thought I'd throw this out as a first draft so that you can help think about the API. Main issue is how to define attributes.

For now, consider this a more of a spike, the implementation is probably messy and can be mostly ignored until we get an idea for the end-user API. That's also why I've only added an integration test. Once we know what we want I'll redo the thing with TDD.