WIP Add component template support

@bajtos - this is a work in progress. It combines the approach we discussed yesterday (copying over raw files) with the existing approach (using the workspace API itself). I'm fairly happy with the result.

Before I finish this up, I'd like your feedback or any gotchas you might see with this approach. If all is well I can take a final pass including the following:

 - cleanup references to `empty` template in the tests (eg. `givenEmptyWorkspace()`
 - add tests for each template to ensure the entities are available once created
 - add tests that check if the static files were copied to the correct place

If you happen to make progress on the ID reworking, I can also rework any dependencies of the templates before landing this. Right now it uses `componentName`, `modelName` and other `name` foreign keys.
I don't like the idea of automatically creating subclasses of all built-in models.

AFAIK most apps can don't need to extend `ACL`, `RoleMapping` and `Role`, thus they can use the built-in models directly by configuring them in `models.json`:

```json
{
 ACL: { dataSource: 'db', public: false }
 Role: { dataSource: 'db', public: false}
 RoleMapping: { dataSource: 'db', public: false}
}
```

Regarding the `User` model, I guess the user should be able to decide, whether he wants to use the built-in `User` model, create a subclass `user` or perhaps a completely different model like `Customer`.

Ideally, users should start with an empty application (no auth, no auth-related models). There should be a method to enable authentication, which will configure all four models. However, that's most likely out of scope of this release.