Merge pull request #118 from Prismatic/name-with-attributes

Name with attributes
Refactor defmethod to reduce duplication and clarify metadata usage
First cut at s/defmulti
added defmulti support and specialized defmethods
Conciser tests that match the new defmulti