make item.slot a derived property

Turn the 'slot' property of items into a derived read-only property,
determined at runtime through a getter function. With this change,
loading bags does not trigger loading all contained items anymore,
which makes the request cache workaround in pers.load unnecessary.

(Along the way, remove redundant setter function in the similar
read-only property Location.activePlayers; in strict mode, assigning
a value to a read-only property throws a TypeError anyway)
allow non-local TSIDs when loading root game objects

Only allowing to load local game objects (currently enforced by
checking the TSID for existing objects) is incorrect - we need to load
remote objects too, which are subsequently wrapped in RPC proxies.
fail early when retrieving invalid TSIDs from persistence
adjust Item.getPosObject according to usage in GSJS

The corresponding API function apiGetLocatableContainerOrSelf is
expected to return undefined in case the item does not have a
container (cf. broadcastState in items/item.js)
fix edge case issues around objrefs/objref proxies

* don't resolve objref proxy when accessing objref properties, even when
  those properties are missing (specific case: objects and the
  respective objrefs without a 'label')
* don't include 'label' property in objrefs when the object does not
  have a label (RethinkDB throws errors for properties of type
  'undefined')
update npm package "harmony-reflect" to v1.1.1
add test for for ES6 proxy shim issue

verify the bugfix in harmony-reflect v1.1.1 for this issue:
https://github.com/tvcutsem/harmony-reflect/issues/43
workaround for Array builtin call on proxied array

Calling the builtin function 'sort' on an array wrapped in an ES6
proxy results in "illegal access" being thrown (a string, not an
Error). This is probably related in some way to these issues:
https://github.com/tvcutsem/harmony-reflect/issues/6
https://github.com/tvcutsem/harmony-reflect/issues/19

This change fixes the problem for the time being through a rather
explicit workaround; if the issue also occurs for other functions, it
will likely surface again.
(also, the change in Session.js makes sure error log entry is nicely
formatted even when strings are thrown)
add derived read-only property Item.type

Without this, the client does not show any item-specific verbs in the
item interaction menu.
make "internal" model properties enumerable

Internal non-enumerable properties of game objects (such as "id",
"slot" for items etc) need to be configurable, otherwise they break
Object.keys on objref proxies. See the inline comments for more
details, and this somewhat related issue:
https://github.com/tvcutsem/harmony-reflect/issues/25
catch errors in async persistence operations

When processing write/del persistence operations at the end of a
request, async.each takes them out of the fiber context, and they are
not covered by the session domain either. The persistence ops
themselves report errors through their callback, which is already
handled, but the surrounding steps (specifically: serialize) may throw
errors, so catch them.
This should probably be handled in a cleaner, more elegant way.
bugfix: game object deletion from persistence

Fix an incorrect argument for 'del' call (back-end function expects the
entire game object, not just its TSID).
use error handler for onDisconnect call, too

Without this, errors thrown in the onDisconnect function (called from
the onSocketClose handler) would crash the worker process.
Merge pull request #22 from yelworc/bits-and-pieces-2

various bits and pieces again