Separating different features in libs

This is a suggestion about how Riot's code can be better organised following the Single Responsibility Principle. Each feature is in its own file so they can be used independently by including just the `lib` you want, or you can load everything at once with `riot.js`.

`render` and `observable` works on node and the browser but the `route` is a browser only feature.