Use symbols.json for determining the API

Also to get rid of regular expression parsing, instead of
collecting exports for observables from the source files, we use
the 'observable' annotations.
Generate symbols before exports
Build task for driving the compiler
Parse options and add docs
Accept a src config, add docs
Include symbols from oli.js using interface and implements tags

Instead of regex parsing, we define tags for interface and
implements.
Greatly simplify and document the usage of JSDoc

This commit simplifies the exports.js plugin so it only relies
on the stability notes to generate the documentation, which
completely decouples it from the exportable API.

As a rule of thumb, whenever something has an `@api` annotation,
it should also have a `@stability` annotation. A more verbose
documentation of ol3 specific annotation usage is available in
the new `apidoc/readme.md` file.

This commit also modifies many source files to implement these
usage suggestions.