Menu links page 2

Most of this code is quite interconnected.  We discussed moving the actual plugin manager that does the CRUD into a different service.  But then we'd need to inject both that and the tree storage into this tree service AND still inject the tree storage into the plugin manager.

That ended up feeling more complex.