Write a pretty robust search for plugin modules.

Figuring out which plugin to load when we allows nested lineman plugins:

1. Build a tree with the client project at the root, of all lineman-*
plugin modules (based on package.json)
2. We short-circuit tree search if we've already encountered a given
plugin at a shallower depth
3. After we've built the tree, we uniq the plugins by first favoring
the shallowest package.json to require the plugin (to allow greatest
override potential, the one closest-to-the-client-app wins) and *in case
of a tie in tree-depth* we favor the plugin with the higher version

Note: right now if we can't resolve a dep that's in the package.json,
we just let resolve blow up without any warning of our own. We could
probably help folks to remind them to run `npm install`