Implement room aliases

You check that the alias exists but not that the alias is an alias to the current room, which means that this has a chance to fail.

Of course, none of these functions are in the habit of crashing, but they _are_ in the habit of producing unexpected  results. In context, if the alias isn't for the current room, `indexOf` will return `-1`, which `splice` will interpret as "remove the last alias".