Templates cleanup

This branch refactors the template layer:

* Document and spec everything in Phoenix.Template
* Further optimize the Phoenix.HTML.Safe protocol and add unit tests
* Simplify the code template engines is required to implement
* Only load templates in the current directory (i.e. it no longer includes subdirectories)
* Add format encoders (see #414)
* Add .exs engine and .json encoder

This is part of the work for v0.6.