Massive rewrite done for a better api structure

Skeleton was born out of the need to define an API programatically with no external dependencies. The spec is modeled after the Swagger 2.0 spec and has a serializer specifically for swagger.

We are not bound to swagger by any means. If we choose to have a different serializer for another type of documentation format, we can do it with relatively ease.

/cc @supernullset
This pattern is so broadly used within the library, I feel like it would be worth pulling it up a level. I am thinking something like;

```ruby
Class Fizz
...
attr_present :exclusive_maximum, :exclusive_minimum, :unique_items
...
end
```

I think it would shorten some of these up nicely