Kill in-flight AJAX requests

Each time the user changes an input form (ie by scrolling up on the tide 
level input) we fire off an async AJAX request which, on return, updates the
results box.

If the user rapidly changes the input box (eg by scrolling) then lots of AJAX
requests get fired off.

There is potential for these to come back out of order, or for some to fail,
in which case we would display the wrong data. Furthermore each request puts
load on the server.

This commit introduces a singleton object which wraps the jQuery ajax() 
method. If there is already an AJAX request in flight, it is cancelled before
sending the new one.

https://www.pivotaltracker.com/story/show/74647310

[Delivers #74647310]