Provided couchgis releases in my iriscouch account.
Formatted a nice tool tip with document contents.

This is more of an exercise to do it with just one assigment. I will remove
that horrend bit as soon as the tool tip is annoying me.
Also I probably shouldn't store an entire document in each title attribute.
This should be loaded dynamically and only if it's needed.
Removed unused function name update_one_geometry.
Changed link title to be compiled on mouseenter.

Rendering all link titles consumes way too much of my precious CPU time,
considering that I only need the ones I hover with the mouse.
This version attaches update_geometry.show_document once to each link's
mouseenter event.
Fixed relay_geometry to work with multiple GeoJSON clones.

The old version most likely just replaced multiple geometry keys with a single
new one (I've never tested this), thus damaging the entire document set.
So I've rewritten the function to load missing documents first and then replace
the id inside GeoJSON_clone with an appropriate new one:
- If we have a document that links to the relayed geometry exclusively (i.e. it
  has only one id inside GeoJSON_clone), we can safely move the geometry into
  it.
- Otherwise remove type and _deleted from the relayed document. This makes it
  invisible in the map page, but the geometry is still accessible to documents
  linking to it.
The above two are only needed if the relayed document is about about to be
deleted from the database.
In any case I switched to replacing the old id substring with the new one.
Reversed downloaded document order in relay_geometry().

This way features are added in the same order as row.id's and I won't have to
cycle through all features for each row.
Substituded GeoJSON_clone in features rather than uploaded_docs.

Thus if two instances of relay_geometry() run in parallel, the last one won't
reset the substutution of the first one.
Still there are a lot of things that could go horribly wrong here; I should
probably write something like relay_geometries() with no arguments or
something.
Set doc.type to null instead of removing it from enumeration.

If doc.type doesn't show up in the enumeration used in $("#upload").submit(),
it won't be deleted and this defeats the entire purpose.
Unstaged documents from upload that remain unmodified.

Otherwise a confusing response 'Uploaded document must differ from previous
version' or something would show up for no apparent reason.
Of course there is a reason and the error is harmless but I want to be on the
safe side here.
Added some explanation on how geometry will be handled.
This simplifies control flow a bit.

I wasn't particularly keen on the return; out of the nested if() statements;
Neither on 'single' being pushed into relays as if it shouldn't have been
popped out of relays in the first place.
Also the redundant boolish !!single in the 2nd if() statement is written out of
sheer need for clarity. No one wants to read this horrible mess, AND ON TOP OF
THAT likes to deliberate on how the 'return;' already rules out !!single.
Aliased 'relayed' to 'relayed.properties'.
Pushed features[f].properties into relays (instead of features[f]).

'single' remains assigned to features[f] because I need to access its geometry.
The stupid 'continue' statements in combination with push/pop are now written
in a comprehensive way.
Renamed 'single' to 'acceptor'.

Because the feature will function such as it will accept the geometry from the
deleted feature as its own, and we can't move the geometry if we don't have an
acceptor for it, etc.
This isn't quite the term I was looking for but I come up with anything better
than this.