The "registered" message is sent to extension modules immediately
after the module is mixed into a Sinatra::Base class. This can be
used to initialize the class with options, add templates, define
error handlers, etc.
Sinatra.register:
* This will extend the DSL in Sinatra::Default (and subclasses) with
the modules passed.
* All public methods in the extensions are added to Sinatra::Delegator
when extending Sinatra::Default or it's subclasses.
* Sinatra::Base.register is available to add extensions to arbitrary
classes (but they don't add methods to Delegator).
* You can pass a block with extensions which will get added as an
anonymous block (same semantics of Sinatra::Base.helpers)
Sinatra.helpers:
* Will forward the modules passed to Default.helpers.
* Small change in semantics: passing a block to helpers will no longer
class_eval the block, but will instead turn it into an anonymous
module. This pushes it into the inheritance chain "normally" and
allows us to call super to reach the original method if redefined.