Implement Application::renderTemplate()

The method renders application templates, which are not directly
related to the application's views and partials.

These are templates used to render system related things, such as
emails sent to users, or any other type of string that requires
template functionality (specially due to JavaScript's lack of
multiline string support).

Templates are are created on app/templates/ and can be created with
any registered view engine.

Templates can be added using the protos template command, as such:

$ protos template some-template message/template a/b/c/template

In addition, templates have access to all of the application's locals,
helpers, partials and shortcodes. The config.shortcodeFilter (option to
control whether shortcodes will be replaced in the buffer) will also
apply to rendered templates.

To access templates, you use the template's path relative to the
app/templates directory, without the extension, which serves as a
namespacing system for the templates.

Here's some code that renders a template:

var buf = app.renderTemplate('some/template-name', {
  name: "John Doe",
  user: true,
  something: 99
});

This will return the rendered template. Notice that an empty string is
returned in case the template does not exist.

======

Additional changes in this commit:

+ Renamed lib/ directory on skeleton with vendor/

+ Add the allowReloadAll option to asset compiler

+ Add Utility::walkDir() method to walk directories recursively