LP#1086458: convert last-print information hash to JSON string before caching

By serializing the printing message and context information to a
JSON string before caching it, we avoid inadvertantly dragging in
things like Javascript execution contexts and possibly references
to objects created by the checkout interface.  This was contributing
to the staff client memory leaks observed during receipt printing.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1086458: define custom event for refreshing the checkout page

Using a custom event handled by a chrome event handler rather
than calling xulG.set_tab() directly avoids any possibility of
leaking objects and executation contexts from the code that's
requesting refresh of the checkout page.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1086458: invoke new 'refresh_checkout' event

This implements using the new custom event rather than
xulG.set_tab() to refresh a refresh of the checkout tab. It
also removes use of a callback function to request the tab
refresh in favor of a simple setTimeout().

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
LP#1086458: remove unecessary anonymous hashes when calling xulG.set_tab()

This follows up on observations made by Steven Chan that
suggests that even the act of creating an anonymous hash and
passing it to a global function can cause (I assume) JavaScript
execution contexts to be leaked.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>