Changed the file upload workflow to appear faster to users.
The upload handler does a quick and dirty check against the file to see if it 'looks' valid, and responds immediately after that. Meanwhile, it starts the actual work of processing the file's data. The user will be moved to the new trace's page, but see a 'processing' indicator while that handler is still working.
New traces will prompt users to give them a name.
Added a 'hasCustomName' property to the trace metadata. By default it is false, and will be set to true once the trace's name is explicitly changed. In the UI, it will automatically open the name editor for an 'unnamed' trace. Closing that editor counts as giving it an explicit name, so users won't be prompted more than once.
Use the joda-time date formatter for the trace list.
SimpleDateFormat is not thread-safe, and was being used in a multi-threaded context.
Explicitly set the creation and import dates for TraceData.
Also removed 'importDate' from the export format, since it is irrelevant.
Avoid reusing TraceIds.
A problem existed where if you deleted the lat trace and quickly created a new one, the new one would pick the same ID as the deleted one (due to the trace manager picking the max trace ID plus one), then the new trace would try to store data to an H2 database that was being deleted.
Fixed an ingestion bug regarding condensed tree paths.
TreeNodes in the CodeForestBuilder are condensed to avoid non-branching paths of nodes with the same type. The problem was that in some codebases, this led to name conflicts, which led to nodes being dropped, and foreign key constraints being violated. I simplified the 'condensePathNodes' algorithm, and added a 'parent.child' naming scheme for class nodes. Meanwhile in the UI, I changed the treemap tooltips to show the most relevant 'package-class-method' heirarchy instead of 'package-class1-class2-...classN-method' (which was quite common in scala codebases)
Avoid passing mutable collections in a multi-threaded context.
The accumulation data was stored in a mutable Set, and when something
called 'getAndClear...' on it, it passed the set directly into the
callback. This ended up leading to lost data, since the set could be
cleared before the callback acted on it. I changed things to use a
SetBuilder, and passing the result to the callback before clearing the
builder. Yay immutability!
More specific CSS selector for the 'processing upload data' overlay.
To avoid having the 'Processing upload data' text show up on any other spinner overlays that happen to be on the page (i.e. the trace ending indicator)
Merge branch 'master' into feature/jsp-support

Conflicts:
	codepulse/src/main/scala/com/secdec/codepulse/tracer/TraceManager.scala
	codepulse/src/main/scala/com/secdec/codepulse/tracer/TraceUploadData.scala
Mark JSP classes as methods rather than classes.