Beminfo 366

* Support new library data format with any numbers of docs or custom nodes
* Large code refactoring for data compiling.
* Make fat models that can build their own childs
* Fix router middleware to support current for custom nodes
use caching and maybe you can use `concat` to shorten code in the loop