@ashfurrow => Dsl refactor

Hello there, decided to devote some time to cleanup & tests since you've now done all the hard work.

Switched to @steipete's Aspect library,  ( /cc Pete, found it a bit odd that the API for removal of aspects is a class method, yet theres a different API for classes and instances. ) which changed the block params to be an NSArray of the arguments. This is a breaking change for the Artsy stuff you've been doing I imagine :wink: :wine_glass:  

I found it a bit hard to write some more of the tests, as state would leak between tests. so I added a way to add / remove / remove all to the public API.

I also tightened up the example JSON, I like the idea of being super specific with the tabbing, but for examples I'd rather it be more readable. One day I'll make a ruby script to tab these things, doing it in Xcode is a massive hassle.

( there's also a bunch of cleanup around the project in here too to make it fancier )