IMPORTANT: 

After reading through the `geo` type, (where you can provide a value or look it up in a field) I'm wondering if `category` and `field` should be merged into a single type, eg:

    "foo: {
        "type": "category",
        "default": "default_value",
        "path":  "some_field"
    }

At index time, if you specify a value manually, then it uses that value.  Otherwise, if you have specified a `path` it looks in that field.  Otherwise it uses the `default`.

This simplifies things a lot.