DO NOT MERGE: Make Spiff a library.

This is for discussion, only.

We found that we need a dynamic version of YAML for our own purposes, but we cannot statically compute everything required for a configuration without interacting with other systems in our case.  This change does the following:

- [ ] Refactors Spiff to be a library, not a binary.  In this model, builtins would be provided by consumers of this library.
- [ ] Refactors Spiff to work in phases.  Use some of the config, do some stuff, have builtins provide other parts of the config as a result...
- [ ] Brings PEG up to date and cleans up dependencies only required by the binary.

This is what would be needed to complete this work:

- [ ] Import paths would need to be rewritten so the merge still refers to upstream.
- [ ] Better test coverage is required...
  - [ ] Phased flows fail in reasonable ways; the errors are understandable.
  - [ ] Dependencies propagate properly across builtins and delay argument evaluation.
  - [ ] Cyclic dependencies between phases are detected.  (I don't think they are right now!)
- [ ] A proper strategy for the existing binaries and builtins would be required.  My suggestion is to move that stuff into a separate repo...

Thoughts?