Using the Guava version of SetMultimap.
Lists replacement.

- Using the Lists class instead of our own custom list() method.
Using utility methods.
Header cleanup.
Immutable instead of unmodifiable.

Throughout the code we were using a pattern where we took the unmodifiable version
of a copy.   This replaces most of those instances (where it made sense) with the
guava Immutable versions.
Preconditions.

- Using preconditions instead of expect().
Merge pull request #22 from dclements/guava2

Issue #8: Basic Guava Integration