docs(Application): remove excess docs
refactor(Application tests): remove unnecessary tests

Other tests will fail anyway when something checked in these is wrong.
feat(Application): export class rather then factory function

Consistency going on. Export class where class is what it's all about.
style(Application tests): describe "app" > "Application"
fix(Application): rename app.* to application.* (class and tests)
feat(Application): add .use(), remove constructor

Remove constructor.
Add .use() which does almost the same except it also calls .init()
on all the specified components.
style(Application tests): wrap .use() tests with describe ".use"
test(Application): check that .use() with no components throws
style(Application): change .use() throw message
refactor(Application tests): check name collision handling with real names

Use "for key of instance" to iterate through real instance names and not
through array of hardcoded ones.
feat(Application): pass app as an argument to component's .init()
fix(Application tests): ooops! Remove console.log()
fix(Observable): make _attachListener() private