Asset graph

This is far from being done, but I'm opening up a PR for discussion on it... this is turning into a pretty big refactor, making roots a lot more object oriented so that asset-graph can be implemented easier. Also, I'm improving documentation a lot.