Isolate classes from Base to separate files

I was looking at Sinatra source code, and tried to understand how it works. The first thing I noticed was "there's SO MUCH STUFF in `base.rb`", seriously it's pretty easy to get lost there.

I isolated some of the classes from base to separate files up to the point when it would require to fiddle with the project object hierarchy to proceed. `base.rb` has shrunk with ~800 LOC.

This is my first attempt at a open source contribution like this, so I will understand if you will consider my efforts pointless.

__Edit__: The Travis build is failing, but it's not related to my changes as I see it. The errors that Travis throws are related to failure to get a gem, but I didn't touch the Gemfile. `rake spec` gives no failures for my changes.
https://travis-ci.org/sinatra/sinatra/jobs/7388775
https://travis-ci.org/sinatra/sinatra/jobs/7388777