Omit extra properties from json files

Fix ComponentDefinition.saveToFs to remove extra properties before
writing json files (config, models, datasources).
Fix `name` in the root `package.json`

Fix `Workspace.createFromTemplate` to set the root package name
to the value supplied by the user, instead of hard-coded `.`.
Fix serialization of component models

The `models.json` should contain only models of the current component.
Move restApiRoot from api-server to server

The root project does not have an app to load config.json.

The configuration of REST API endpoint belongs to `server` component,
because that's the component registering all different sub-apps.
Omit json config files in the root component

The `api-server` root component should not include the following files,
since there is no `app` to read them during boot:
 - config.json
 - datasources.json
 - models.json
templates: clean up + upgrade to loopback-boot 2.0

 - Include `loopback-boot 2.x` in the root `package.json`

 - Include express 4.x middleware packages in the root `package.json`

 - Drop `email` datasource. It is no longer needed, since loopback-boot
   does not call `loopback.autoAttach`.

 - Rename model names in `rest/models.json` to reference the built-in
   loopback models. Make internal models like `AccessToken` not public.

 - Refactor the `server` template to use the boot-based registration of
   middleware (see loopback-example-full-stack).
Mark all `componentName` properties as required.
Implement Workspace.isValidDir

A basic implementation that checks whether all components can be loaded
and whether there is at least one component present.
Merge pull request #63 from strongloop/more-yeoman-changes

More yeoman changes