[server] Add cache support for repo

Very limited attempt to add cache support for ``repo_id`` in ``server/repo-mgr.c``

Here are some problems known to me:
1. No way to destroy this ``GHashTable`` (named ``cached_repos`` in ``struct SeafRepoManagerPriv``) since I could not find out where the parent ``SeafRepoManagerPriv`` instance gets destroyed.
1. Don't want to hack into ``repo_exists_in_db``, and it seems less frequently called than ``seaf_repo_manager_get_repo``. Maybe it would be good enough to achieve our goal. However, no profiling data is available at the second.
Should not wipe out cache here. This function is called only when a new repo is created.

There are two functions to where the cache needs to be wiped out:
- seaf_branch_manager_test_and_update_branch() in branch.c. Updating the head commit of master branch will change almost everything in a repo object.
- set_virtual_repo_base_commit_path() in virtual-repo.c. This will change the virtual_info field.

You should provide an interface in repo-mgr.c for the other modules to delete the cache.