Implement static view extensions. Closes #191

A default extension, added to all static routes can be defined in
the configuration file, by setting config.staticViews.defaultExtension.

Static views can now define custom extensions by using a predefined
file convention for files inside app/views/__static. For example:

__static/hello-world[json].hbs renders on /hello-world.json

Assuming a default file extension is defined in the config, static
templates can ignore it by overriding with an empty extension:

__static/hello-world[].hbs renders on /hello-world

Any static views that define custom extensions will be rendered as
raw, which means the header/footer templates will not be included.

Additionally, static views can enable raw rendering by adding the
.raw extension preceded by the original template extension, as such:

__static/hello-world.raw.hbs will render raw on /hello-world

Even if it is redundant, you can also mix extension overrides and
raw rendering by specifying both, as such:

__static/hello-world[json].raw.hbs will render raw on /hello-world.json

Protos sets the Content-Type for static view extensions automatically.

By default, an encoding is not set for the file extensions defined for
the static views. To automatically set the default application's encoding
provided on config.encoding, the config.staticViews.setEncoding regular
expression can be used to match the extensions which will automatically
be applied the default encoding.