Introducing entities. Closes #44.

Also renamed `*block` parameters. So instead of...

    public func fetchData(key : String, successBlock : (NSData) -> (), failureBlock : ((NSError?) -> ())? = nil)

...which is very Objective-C, I'm doing...

    public func fetchData(key : String, success doSuccess : (NSData) -> (), failure doFailure : ((NSError?) -> ())? = nil)

...which is shorter for both the API user and us. This won't likely be the naming standard, but it beats using `block` in parameter names.