Initial import
Improve handling of errors

Instead of popping up alerts, display messages in an error div
at the top of the page. Use $.ajax() instead of $.get() for retrieving
the bug and attachment so get a callback on failure.
Fix line number interpretation

Make consistent that we increment the line count after the line,
not before. So:

 1 1 2
   *

Not:

 1 2 2
   *

This gives a simple interpretation that oldStart,newStart for the hunk
are the line numbers of the first line of the hunk.
Fix definition of assertNotReached()
Fix highlighting of "added" huinks

Fix the flag we were checking for when adding the CSS class and change
the color to be more clearly green as opposed to a cyan that looked
confusing with the "changed" blue.
Add splinter_proxy.py

Add a simple HTTP proxy server to allow hacking on Splinter
without a test instance of Bugzilla. Splinter is content is
served directly, Bugzilla URLs like /attachment.cgi,
/show_bug.cgi are redirected to a configured external Bugzilla
instance.
Handle multiple redirects in splinter_proxy.py

Handle the case where we redirect and then redirect again -
in particular:

 http://bugzilla.example.com/attachment.cgi?action=view =>
 https://bugzilla.example.com/attachment.cgi?action=view =>
 http://bugzilla-attachments.example.com/attachment.cgi?action=view
Improve behavior when bug/attachment isn't specified

When bug isn't specified, show an entry with a [ Go ] button
When attachment isn't specified, show a list of attachments for the bug.
Fix missing semicolons in flattener.py output

Add semicolons after generated 'a = b' assignments.
Read and display patch "into"

Extract the lines in the patch before the first hunks,
strip off whitespace and git'isms like 'diff --stat' output,
and show at the top of the page.
CSS tweaks

Make comment editor bigger and wrap the comment displays at
the top of the page.
Make comments ADDED/REMOVED/CHANGED

Have three different types of comments:

 Patch.ADDED: Comments on new lines
 Patch.REMOVED: Comments on removed lines
 Patch.CHANGED: Comments on changed segments

ADDED/REMOVED are represented in the review format by ommitting
the - or the + of @@ -I,N +J,M @@ hunk intro.

'... N more ...' abbrevations are introduced into the review
format to allow representing a comment on an entire changed
segment without getting really long.

The CSS and HTML is adjusted so that the comments appear in
three overlapping vertical columns based on their type; this is
done by adding a single column-spanned columnArea div under
the line and then using floats within it.

Patch.File.getLocation() now allows either oldLine or newLine
to be null to look up by only one or the other.
splinter_proxy.py: allow easily switching configurations

Make the configuration in proxy/config.py a hash table of
hash table configurations, and allow overriding the default
configuration from the command line.

Rename server_bind,server_port to proxy_bind,proxy_port for clarity
Print the URL to connect to when starting
Adjust casing of Javascript files

Make TestUtils module map to testUtils.js not testutils.js
Clean up loading the global attachment object

Factor out searching for the attachment into Bug.getAttachment()
Provide good error messages when the attachment is missing from
  the bug or isn't a patch.
Add saving of drafts to HTML5 localStorage

Add an abstract ReviewStorage "interface" for saving information about
in-progress reviews and an implementation of in terms of the
"Web Storage" spec as implemented in very recent browsers.

Hook that up in the web interface to auto-save on changes (with a
"Saving Draft..." indicator that is at least useful while debugging
the facility.)

The "Save" button is retitled to "Publish" to reduce confusion between
saving drafts and publishing to the bug.
Show drafts on "Enter Bug" and "Choose Attachment"

When we don't have a bug # at all, show drafts (and published
reviews for context) as options along with the "Enter Bug" entry.

When we have a bug # but no attachment, mark the attachments that
have open drafts.
Improve navigation

- Show bug header on "choose attachment page"
- Link from bug header on review page to "choose attachment page"
- Add a link from "choose attachment page" to the original bug
  (new config.js setting configBugzillaUrl)
Make proxy do substitutions in config.js, add configNote

splinter_proxy.py now handles config.js directly and can substitute:

 @@BUGZILLA_URL@@
 @@NOTE@@

When running an anonymous proxy, the second is substituted to a warning
that the instance is read-only, and this his hooked up to be displayed
in a promiment banner across all pages.
Different colors for different reviewers; who/when on individual comments

Use up to 5 different colors for different reviewers. (Number could easily
be increased, but would require coming up with more colors. 5 reviews on a single
patch seems like a lot.)

Add the reviewer name and review date to each individual comment.