Minor cleanup to h plugin spec
Fix handling of multipart content types in the mailer plugin

Previously, if the mail plugin created a multipart mail, it would
break as the Content-Type would be replaced.  This changes things
so that the default Content-Type header is deleted before
processing the routing block for mail routes.  Also, when finishing
the mail request, the Content-Type header is removed from the
headers to automatically add to the message.  The header (or the
default :content_type setting) is then used to set the content_type
for the message using the mail API, making sure to set the content
type only for the specific (non-attached) part in a multiple/mixed
message.  A multipart/alternative message does not have a content
type modified, as text_part/html_part are used to specify the
content parts for those.
Make view_subdirs plugin load the render plugin first

This is better than just documenting that the render plugin
should be loaded first.
Make content_for and render_each plugins depend on render plugin
Small cleanup to hooks spec
Support :template option in for render/view to specify template to use, instead of requiring separate argument

The render/view methods have long supported using a single
hash of arguments, but if you did that, there was no way to
specify a template name to do a normal template rendering.

While here, refactor the render plugin to extract two new
methods, one for finding a template, and one for converting
template names inside template_path.  Have the view_subdirs
plugin override this new method instead of template path.
Add named_templates plugin, for creating inline templates by name, instead of storing them in the file system

This makes it easier to create single file self contained web
applications.  It also adds an easy way of specifying logic to use
for for templates.  This makes it convenient for handling
component templates.
Store class level routes in the opts hash

This is simpler than the manual instance variable management.
Store hooks in opts instead of separate instance variables
Store metadata in opts instead of instance variables for some plugins
Support loading the mailer plugin multiple times

Previously, this would lose the :content_type setting defined
previously.
Automatically dup unfrozen Array/Hash opts values when subclassing

This DRYs up a lot of plugin code that was doing the duping.  In
general, subclasses should get a copy of the data from the
superclass, so all arrays or hashes should be duped, unless they
are frozen.