Component registration pattern

Connected with #1 

Code changes:
- Remove all this.method occurences and return a object with methods (Carpet.js core)
- Store components in a private var
- Advice is a component now (separated from the core)
- Test spec for components added and is separated from the core framework now
- Test spec added for component pattern
- PubSub component removed (should be a separated library)
- Even smaller in size now (minified core)

Documentation update:
- How to create custom components
- How to load them
- How to get them globally and locally in the module
- How to contribute with build-in components
- Information about component return types