Normalize fields

Closes #2135

Fixes issue were `number` type fields would not show up in the agg builder because the index pattern field types would be set to the ES type (`long`, `short`, `float`, etc.).

- The original ES type is saved to `field.esType`
- `field.type` is now a defined property, with a getter that uses `castMappingType` to calculate the kibana-mapped value (based on the stored `esType`)
- `type` also has a setter, so internally, we should always set `field.type` to the ES value  (`long`, `short`, `float`, etc.), and the application will adapt
  - ex) `field.type = 'long'; console.log(field.type); // will output 'number'`
- Since we cache these values in ES, it checks to see if the old values exist, and calls `refreshFields` if they do - it also shows a message to the user about it