Sweeping Architecture Changes

Split stuff off into separate modules/class files for easier/clearer
management. This will also allow for Strategy/Factory pattern
refactoring of these modules. i.e. the "API's" just become an interface
that responds to simple_definitions (or whatever I named the method).

Same goes for the parsers.

also split out the specs.

Please note the API_KEY is blank and needs to be populated if you want
to use this.