Term Vectors: Support for artificial documents

This adds the ability to the Term Vector API to generate term vectors for
artifical documents, that is for documents not present in the index. Following
a similar syntax to the Percolator API, a new 'doc' parameter is used, instead
of '_id', that specifies the document of interest. The parameters '_index' and
'_type' determine the mapping and therefore analyzers to apply to each value
field.
This looks unnecessary? If a field is not in the mapping then `isValidField(fieldMapper)` will return false since `fieldMapper` is null? Additionally, It seems to me that this check will create bugs if you have shards that have some indexed documents (so that topLevelFields is not null) but don't contain some of the fields that exist in the mappings?