complete rewrite of connection management / watchdog code

Added StateManager and ConnectionManager classes (and related
data classes) to make state and connection management operations
explicit and (where feasible) thread-safe.

The watchdog is now very careful not to interrupt the
server loop thread unless it is explicitly blocked waiting
for a keepalive signal.  I'm hoping this fixes errors I have
seen where the watchdog starts killing the server loop
even when it is not connected.
added CPLUSPLUS_FUNCTION and CPLUSPLUS_PROGRAM problem types

The immediate motivation is to allow testing of function
problems where the function takes a pointer to a struct
instance.  It is not legal to take the address of a literal
struct in C++, but it is in C.

Bumped the schema version number of ProblemData, Problem,
and RepoProblem since the new problem types won't work on
older installations of CloudCoder.
use | as a field separator for CSV

The JSON data has embedded ',' characters, which some CSV
parsers can't handle, even if they appear in a quoted value.
Also, output the coverage data with course id (added the
header but forgot the actual data.)
ignore test directories
script for starting builders on cluster
ensure coverage info is stored even if partial
make sure cleanup() is called on submission result visitor(s)

Otherwise we could get truncated output for, e.g., coverage
results.
data analysis program to collect problem attempts per student

The attempts are classified by SubmissionStatus.
clean up imports
a SnapshotSelectionCriteria can be specified to find work sessions
get time to solve data
default to using embedded database config
fix minor bug in header output
ensure output writer is flushed, duh
fixes for registerstudents admin command

There was a query that was reading tuples from
cc_course_registrations and attempting to load them into
the fields of User objects... :-)
Merge branch 'master' of github.com:cloudcoderdotorg/CloudCoder

Conflicts:
	CloudCoderModelClassesPersistence/src/org/cloudcoder/app/server/persist/util/ConfigurationUtil.java