Add RodaRequest#session, and have #session delegate to that

Rack::Request already defines session, but didn't have it raise
if there was not a session handler (it just returns an empty
hash in that case).  This leads to behavior differences between
RodaRequest#session and Roda#session that were not intended.
Use local/instance variable lookups instead of method calls to improve performance
Add static_path_info plugin, making Roda not modify PATH_INFO or SCRIPT_NAME during routing

This requires extracting some methods from Roda core to make them
overridable by plugins.

I think this static path_info handling is a better default for
most Roda applications.  Unless you are using Roda as a URL Mapper,
you probably don't want to modify PATH_INFO or SCRIPT_NAME. So
this behavior will probably become the default in Roda 2, with a
url_mapper plugin that gives the previous behavior.
Use @captures instance variable instead of method for performance
Make RodaRequest.consume_pattern not capture pattern by default

Previously, consume_pattern added a capture for the pattern
in order to update SCRIPT_NAME.  However, that information
can be extracted from post_match data, since we are storing
the initial path, so it isn't necessary.

This patch actually slows down the default matching by about
2%, but if the static_path_info plugin is used, this speeds
up matching by about 3.5%.  With this patch, Roda with the
static_path_info plugin is about 18% faster when matching,
compared to the default behavior without this patch.

Note that this can break backwards compatibility for users
that were manually calling RodaRequest#consume and capturing
the pattern.  Such users need to change their code to not
capture the pattern.
Make static_path_info actually work

This makes r.root, r.is, and anything else that uses TERM (e.g.
r.get, r.post) work with static_path_info.

Fix specs to they make sure the routing tree operates as expected.
Make backtracking_array plugin work with the static_path_info plugin

Since I don't want either plugin to depend on the other, this
currently cheats by just checking for the instance variable.
Add class_level_routing plugin, for a DSL similar to Sinatra

This isn't really recommended for general use, but it does show
how flexible Roda is.  It is a useful way to be able to add
routes after defining the normal routing tree, though.