Doc table panel

What this does now:
- Adds support for saved searches as document tables on the dashboard. 
- Adds `type` key to dashboardpanel schema to support things other than visualizations. Can use this for input panels in the future
- Added a configurable edit destination for panels, eg `#visualize/edit` for visualizations, `#/discover` for searches
- Adds a tab called **Searches** to the panel adding dialog
- Creates a doc-table directive that can view the hit results of a savedSearch
- Moves table-row and table-header into the doc-table directive from discover.js
- Allows for sorting changes
- Removes a slow cloneDeep in `fetch.js`
- Removes a flatten routine that didn't know the mapping.
- Lets table-row do the flattening/formatting if it hasn't already been done. Caches on $$_flattened and $$_formatted
- Removes the `timefield` attribute we'd been passing around since indexPattern already has it.

What it will do:
- Have tests for the doc-table directive.

What it will not do:
1. Replace the table code in discover with doc-table. There's a bunch of discover changes in https://github.com/elasticsearch/kibana/pull/2196. They do share the table-row and table-header code, which is good, so it only the table element wrapper that is unique to discover. After #2196 is merged we can see about using doc-table in discover
2. Implement filtering.
3. Allow adding/removing columns from the dashboard, this must be done from discover. Feels like a phase 2 item since it requires a new field picker, and figuring out dashboard-specific panel option persistence

I'm happy todo 1. and 2. above as separate issues, this pull was just getting too big.