Key Value Observables in Atomic Components

This PR includes the ability to observe/unobserve Component data.

1. `state()` was modified to trigger observables updates (using eventemitter2 library again here)
2. `observe` / `unobserve` added
3. Examples updated to verify they are working
4. Added test to verify observable functionality. Since most of this code is based on eventemitter2, the total amount of code we need to check is much lower.