Implement room aliases

I'm still not sure how I feel about `aliases` being an `id` -> `room` map instead of an `id` -> `id` map, but it's not like we'll have gc concerns over this, so I guess it's fine.