Refactoring for #23: isolate existing WU code

- Added PageDiscoveryWorkUnit model
- Isolated JSON code
Refactoring for #23

- Added logging to crawler
- Renamed method
- Integrated Gson
- Started on AnalyzePagesWU
Finished WU generation for #23

Lots of refactoring included:
- Fixed bean ID/class injection name
- Renamed stuff to get "pages" not a page
- Created base WU class
- Gave JSON to `gson` library
- Fixed connection leak in `DataAccess`
- Renamed `SiteRepository` to `PageRepository`
- Default work unit is now page analysis
Part of #23: share code for Work Unit classes

- Created `zeario-sharedclientserver` project with shared classes
- Created parent project to manage inter-project dependencies
- Renamed some projects to include "zeario" in the name
- Cleaned up a bunch of imports
Fixes for #23: crawler gets a WU with links

- Removed ImmutableList; it can't be constructed from Gson because it
doesn't have an empty constructor.
- Scraper can get content (JSON) or pages (HTML)
Resolved #30: shared normalize domains code

Note: only to be used for detecting domains. Crawler should still crawl
the original URLs, because we use some non-preserving changes.
Almost finished #23: file zipping and uploading

- Crawler has a unique, persistent ID
- Crawler zips up results, as per specs, and uploads them
- WorkUnitManager can zip and upload results
Ignore crawler's GUID.
Resolved #23: WUs are unzipped on the server
Initial cut of #24

- New DB table (pageQueue) and repository call
- New page service
- New suggest-page page
- Dupe checking
Resolved #24: final system test

Reorganized tests to match production code packages