Implement anchored-to-root context matching (refs #69)

- Add support for context element matchers with a null type
- Include the initial edge in the context during resolution
- Add an end-to-end anchored-to-root test
Code reuse is good
Add another comment to dependency solver.
Merge comment & fix
Fix JavaDoc typo
Add Guava as a dependency, deprecate FrozenList
Create initial DAG nodes and builders (refs #61)

- DAGNode and DAGEdge, the core representations for immutable DAGs
- DAGNodeBuilder, to build them up
- Basic tests
Make Grapht depend on GL parent
ignore target symlink
merge default branch
Add missing constructor line for dag node builder
implement equality for DAG nodes
Add incoming edge cache
More DAG capabilities

- DAG nodes use reference equality
- We can search for reachability, and this is tested
Implement immutable desire chains.
Separate desire chains from injection contexts

- Use desire chains rather than accumulating the previous desires in the injection context
- Remove prior-desires capacity from injection context
- Rename InjectionContext.push to extend
Abstract chain capabilities out into support class.
Make abstract chains serializable
Make injection contexts a chain.
Add FIXME for rules