Session variable improvements.

 - Add more documentation for SessionVar
 - Read accesses to SessionVar now also start a new session.
Disallow types with aliasing to be stored in a session (immutable references are fine).
Always return session values as const to avoid unintended no-ops.

Example:

SessionVar!(S, "someStruct") someStruct;
someStruct.field = 32;

Field would be set on a temporary in this case. The correct approach is:

S s = someStruct;
s.field = 32;
someStruct = s;