Optimize caching with volatile var instead of synchronizing the whole block.
Revert "Explain double Box in LiftServlet.handleVersionedAjax."

This reverts commit 2d0709a40ab600bf27df602d1f5bbb187e0661b7.
Revert "Make ajaxRequests a val in LiftSession."

This reverts commit 11c83fe128e27f743df75f0c0603d6d6b3b28178.
Revert "Don't suspend requests too early for the first request."

This reverts commit 70ffcbaa3fca6760de3096da5bc64585eeaf9479.
Revert "Move ajax request list into LiftSession with lastSeen."

This reverts commit 7d89340f0a4bb2020d271b9c334658b765ac0e66.
Revert "Delimit version in GUID string by a dash."

This reverts commit 1c465306bd2049bcdeb8b81fce5c1fda5e774c95.
Revert "AJAX version-based deduplication."

This reverts commit ba0b3130949459fbcb3dc07d89e23106c046aa03.
Revert "Rename continuation-related code to clarify Comet association."

This reverts commit 0f7b081642948f8b3ca0c75af77936101d3323d3.
Revert "Include a version on the end of the Ajax GUID."

This reverts commit bbd703dcad3296e211354c9a521707c8f2fc0b31.
Revert "Add !< to LiftCometActor."

This reverts commit 4b61567f2ee9225e770e8e299273f75b73a22ec5.
Resource files are loaded correctly for Ajax requests
Resource files are loaded correctly for Ajax requests
Fixed a missed implicit conversion issue a NodeSeq is a NodeSeq not an Iterable[NodeSeq]
* modified unsafePublishLift to use publish instead of publish-local
* made unsafePublishLift executable
* updated scala versions we build against
Changed *Var backing store to concurrent hashmap
Fix deadlock in SoftReferenceCache apply function.

When we find a stale SoftReference, release the read lock, then acquire
the write lock, double-check that the reference is still stale, and then
finally remove the entry from the cache.
Move uriSuffix extraction into lift_ajaxHandler.

By having it in doAjaxCycle, there were situations where the uri suffix
could get lost. The most obvious one was when a long-running ajax
request was occurring, and two AJAX requests were queued during that
time frame. This would result in the first request getting the second
request's uriSuffix, and the second request getting no suffix at all.

We now immediately put the uriSuffix into the sending data when
lift_ajaxHandler is called.
Encode an AJAX request version in the request URI.

The AJAX request version has two components: the actual version number
and a count of queued requests. This is presented as two base-36 values
after a dash. So a request now looks like:

/ajax_request/F<page version>-v8

Where v indicates request number 31 and 8 indicates that there are 8
queued requests that have not been handled yet.
Drop the timeout on comet-related AJAX requests.

While this will tie up a request thread for longer, it means we can
reliably say that when the AJAX request thread completes, it will
actually have the correct response to the original request.
Add tracking for AJAX requests in LiftSession.

Request info consists of three things:
 - The request version.
 - A future for the response to the request, satisfied by the first
   request for this version when the response is ready.
 - A lastSeen timestamp, used to expire the entry after the usual
   function lifespan.

LiftSession.withAjaxRequests exposes the request list, which is a Map
mapping a page version to the list of AjaxRequestInfos currently being
tracked for that page. AjaxRequestInfos are cleaned up according to
their lastSeen timestamp, which is updated the same way as those of
functions on the page.