set a URL fragment name for each CloudCoderPage
fix typo
working on supporting direct links to exercises

Allow both a "fragment name" selecting a particular page,
and "page params", meaning a description of how to instantiate
session objects, to be specified as part of the URL.
Initially, we will try to allow direct links to an exercise
by providing course id and problem id as part of the page
params for the DevelopmentPage.

Does work yet, but some of the infrastructure is in place.
trying to bug why getting/parsing URL fragment isn't working...
more debugging of URL fragments: not working

Removed GWT history support, in case that was interfering.

I'm getting completely screwy behavior: the initial fragment
is invisible to onModuleLoad, and instead it sees the fragment
name that is set LATER when a CloudCoderPage is activated.
Extremely weird, it's like onModuleLoad predicts the future
somehow, or it's getting executed twice (but I can only
debug the second time.)
found and fixed mysterious changing of the URL fragment name

The first time we attempted to change the URL fragment,
when going to the LoginPage, it was triggering a page
reload in the browser because the ":" (part of the
GWT development mode URL) was getting URL-encoded.
Undoing that encoding left the non-fragment part of the
URL unchanged, allowing the URL change to take place
without a page reload.

Yay?
direct links to exercises work!

Still need to handle cases where the page parameters don't
adequately specify the course and exercise - right now,
we still activate the DevelopmentPage, but without a valid
Problem and/or CourseSelection, which causes various errors
with the UI.  Probably we should display an error UI which
would allow the user to get back to the courses/problems page.
Merge branch 'master' into url-page-links
added a general mechanism for loading page objects

The PageLoader class can load any needed page objects
based on PageParams specified as part of the URL fragment.

Removed all of the special-purpose code in DevelopmentPage
for loading CourseSelection and Problem from parameters in
the URL fragment.

Still to do: have all of the CloudCoderPages other than
DevelopmentPage explicitly declare which objects they need,
and implement support in LoadPageObjects to load those kinds
of objects.
clarified a comment
Merge branch 'master' into url-page-links
added support for direct link to EditProblemPage

Not tested yet, but it will definitely work.  Trust me.
defer creation of page UI until after page objects are loaded
PageObjectParamNameMap: map page object classes to parameter names
LoginPage does not require any page objects
moved getWidget to CloudCoderPage, added public setWidget

This allows CloudCoder (the entry point class which manages
the internal navigation between pages) to set an arbitrary UI
widget for a page, which is necessary for when page objects
for a directly-linked page can't be created correctly.
added default implementation of deactivate() in CloudCoderPage

It cancels all subscriptions.  All CloudCoderPages need to do
this: they can override the method if they need to do additional
cleanup.
Merge branch 'master' into url-page-links
automatically set page params in URL fragment based on page/page objs
don't attempt to redirect to the login page from the login page