Add in memory tag and metastore index

## Overview

This PR adds an in memory metastore and tag index. It should be treated like a write through cache for the metastore. Whenever the metastore gets updated the index should. The index is loaded completely into memory on server load.

It will provide quick lookups for measurements, series, and filtering those based on tags and regexes.

For all the `LIST MEASUREMENTS`, `LIST SERIES`, `LIST TAG KEYS`, and `LIST TAG VALUES` queries, this index should provide everything needed to answer them. Unless they have a time filter, in which case we'll have to do some other stuff later.

The query processor should be able to use this to walk the AST of the where clause to get a set of series IDs that need to be queried. It can then use those to create MR jobs to get everything done.
If you called this even `m` it would be clearer to me what this variable is. But that may just be me. `name` is pretty general. Also, I think this function would be better named `AddSeriesToIndex`. As it stands it sounds like it's adding a series to the system, which it is not doing -- the series already exists.