Created initial test of refactoring node.

With this setup, we have a generic Node class that contains all of the stored data for its subclasses, but it's abstract so you cannot store generic Nodes, only the subclassed version. Node has super classes for overriding search, so each subclass can create a query parameter that indicates why it is unique. Then you can use that class's search functionality to find only the appropriate nodes.

Each subclass has its own functionality that only it can use. All of the data is stored in the super class's store. You cannot do an incompatible search to use functionality that shouldn't be allowed.

I probably need to refactor Folder and Dashboard a bit to make their functionality work more properly, but I think this gets the basic idea across.