Adding support for authentication

Some massive changes here:

1. Adding v2 of the backend API, which requires authentication on some methods. It actually requires auth on listRooms() so as the result it requires it on everything else that uses it, which is everything else.

2. Re-working Android client to support auth. Finally decided against having two clients.

JS version doesn't support authentication. Maybe yet.
Actually adding new files which support authentication.