Made project browser generic

Refactored the project browser to operate on generic interfaces rather
than hardcoded to use project-specific view-model types. This means that
is now a generic hierarchy browser in all but name. This is in
preparation to using it for the scene browser as well.