#2930 Reference count sessions in WebFilter.

- Rather than storing Boolean.TRUE for the session ID in the cluster
  map, store a reference count
- Replaced get/put calls with executeOnKey and EntryProcessors to
  keep network hits low
  - AddSessionEntryProcessor is used to produce the initial reference
  - ReferenceSessionEntryProcessor increments the reference count when
    a new node looks up a session and creates a local "copy"
  - DestroySessionEntryProcessor decrements the reference count and
    returns Boolean.TRUE or Boolean.FALSE to indicate whether there
    are any further references
  - All new EntryProcessors implement IdentifiedDataSerializable for
    speed
- Renamed InvalidateEntryProcessor->InvalidSessionAttributesEntryProcessor
  and convert it to IdentifiedDataSerializable
- Updated WebFilter.init to store the WebFilter instance in an attribute
  on the ServletContext so that SessionListener can look it up
  - This allows WebFilter.destroyOriginalSession to be an instance method
    which, in turn, allows the session maps to be non-static
  - Having the maps be non-static makes the various WebFilter tests more
    meaningful because they more accurately simulate two separate servers
    accessing clustered session state
    - Otherwise, while both servers have their own WebFilter instance,
      those instances are sharing the same static session maps
- Added a unit test which verifies that session data is removed from the
  clustered map when the session has timed out on all referencing servers
- Reworded some log messages to make them more clear/useful
- Updated copyright dates from 2013 to 2014
#2930 Review rework for #2931.

- Set an explicit timeout on WebFilterSessionCleanupTest
- Corrected Checkstyle errors in SessionListener and WebFilter
  - Split WebFilter.createNewSession into multiple methods to reduce
    its complexity
- Added more class-level and package-level documentation
# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
# On branch 2930-bturner-reference-count-sessions
# Your branch is up-to-date with 'origin/2930-bturner-reference-count-sessions'.
#
# Changes to be committed:
#	modified:   src/main/java/com/hazelcast/web/SessionListener.java
#	modified:   src/main/java/com/hazelcast/web/WebFilter.java
#	modified:   src/main/java/com/hazelcast/web/package-info.java
#	modified:   src/test/java/com/hazelcast/wm/test/WebFilterSessionCleanupTest.java
#
Merge pull request #2931 from bturner/2930-bturner-reference-count-sessions

#2930 Reference count sessions in WebFilter.