refactoring to allow transactions to throw auth exceptions

Some transactions inherently must check whether the user is
authorized to access data; throwing a NetCoderAuthenticationException
is a simple way to indicate that the transaction failed because
of a lack of authorization (as opposed to simply not finding the
requested data.)
implemented doUpdateProblem - untested
implement a meta-model for persistable model objects

The meta-model describes the names, types, and other properties
of model object fields, and is used by the persistence layer to
store and retrieve model objects.

Added meta-information to Problem and ProblemData.  Used it in
JDBCDatabase to generate an update statement to update a problem.

Eventually, the database itself can be created from this
meta-information, meaning that we don't have to worry about the
model objects getting out of sync with the database schema.
This will also allow validation of things like field lengths,
since they will be explictly represented as part of the model object
classes.
fix bug: mark problem_id field as the unique id for Problem class
implemented updating of problem and test cases
bugfix: inserting a Problem wasn't working (wrong # of placeholders)

Changed the code to use the schema metadata to generate the
placeholders automatically.
bugfix: commit editor contents before attempting to store problem
attempt to purge Problem list before leaving page

This is to ensure that the list of Problems in the CourseAdminPage
is refreshed. Doesn't actually work - need to investigate.
Merge branch 'master' of https://github.com/jspacco/CloudCoder
bugfix: purge ProblemAndSubmissionReceipt list after leave edit problem

This forces the list of problems to be reloaded in CourseAdminPage.
change readme to mention cloudcoder.org website
Merge branch 'master' of https://github.com/jspacco/CloudCoder
make sure dest dir exists for generated keystore
Merge branch 'master' of git://github.com/jspacco/CloudCoder
Merge branch 'master' of github.com:daveho/CloudCoder
use override-web.xml to override ctx params, build script improvements

Jetty allows overriding of web.xml context params by specifying
an additional web.xml whose values override the one in the
webapp's actual web.xml.  We now use this mechanism to allow
the configuration properties in local.properties (generated by
configure.pl) to override the ones in web.xml, which are suitable
only for development.

Also, improvements to build.xml scripts.  Specifically,
we don't copy cloudcoderModelClasses.jar and
cloudcoderModelClassesPersist.jar into the webapp's
WEB-INF/lib directory any more, but instead resolve build-time
and development-time dependencies on them through the
classpath.  CloudCoderWebServer's build.xml copies these
jar files into WEB-INF/lib as part of creating
cloudcoderApp.jar, so they are never in the actual
filesystem.  This is important, because a stale version
of either jar file at development time can lead to strange
behavior, as the source code can get out of sync with the
class files (in the jars) that the webapp is actually
using.

Also, modified the build.xmls so that needed libraries and
code are built automatically, for proper prerequisite
management.
eliminated some debugging code
fix .gitignore
get keystore name/password from configuration properties

Also, include a default keystore to use for running in
development mode.
include keystore in deployable webapp and builder

Also, exclude the default keystore from the deployable artifacts:
it would never be a good idea to use it in production.