refactor createSession to use a named prototypical constructor

Trying to debug memory leaks involving browserchannel sessions is a pain, because they just show up mixed in with other EventEmitter instances. Named constructors with prototype methods are more efficient and easier to GC / debug