Abstract view-compiler to be able to use third-party templating engines

After the changes everyone will be able to plug in its own  templating engine like:

```
derby.use(function(derby){
  if (derby.util.isServer) {
    var jade = derby.util.serverRequire('derby-jade');

    var App = Object.getPrototypeOf(derby).App;

    App.prototype.viewExtensions.push('.jade');
    App.prototype.compilers['.jade'] = function(file, filename, options) {
      options || (options = {});
      var out;
      jade.renderFile(filename, options, function(err, html) {
        if (err) throw err;
        out = html;
      });
      return out;
    };
  }
});
```