First approach to using localstorage

Just to generate the diff and kick off some questions in [#39], no need to merge this. 

What PR does: 
1. Adds `storage` services, storing messages by room into localstorage (key is `'room:'+id`), with `get, push, unshift, getLast` methods.
2. Uses storage to store data when: 
+ fetching data in the addToTop method
+ receiving message from the socket
+ creating your own room
3. Some unit tests just to make sure something works.