StoryPathLibraryListener

Clients of StoryPathLibraryListener can now call
#setStoryPathLibraryListener to be notified of events changing the
contents and order of cards. This means a client now only has to call
StoryPathLibrary#getValidCards() one time, and can receive all
subsequent updates via the Listener.

This commit also configures Gson to operate in the
excludeFieldsWithoutExposeAnnotation, which was required to add a
StoryPathLibraryListener to StoryPathLibrary. Please review the
annotated fields in StoryPath and StoryPathLibrary for accuracy.

Fixes issue with ClipCards not properly responding to re-ordering.