Allow binding to satisfactions (#79)

This adds the `toSatisfaction` method to `Binding`, allowing
clients (particularly extending code or language bindings)
to bind directly to a satisfaction.
Create bind rule builders
Add method to create a copying bind rule builder
add missing license header
Use multimaps for binding functions

This uses Guava's multimaps to implement rule-based bindings.
Merge pull request #80 from grouplens/feature/elehack-bind-to-satisfaction

Merge binding improvements from #80, closing #79.

Also uses multimaps for binding functions.