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.
I prefer this approach because it gives us the flexibility of changing what
we do with the quoted expression without changing the template engine. For
example, today we are inlining the code directly on render/2 instead of
defining a private function. If for some reason this needs to change, it
will be easy! It also means the template engines can be re-used for other
tasks that do not necessarily require render/2 and it removes code
duplication between them!



-- 


*José Valimwww.plataformatec.com.br
<http://www.plataformatec.com.br/>Founder and Lead Developer*