Abstract entity rendering with EntityEmbedDisplay plugin type.

I think this is how I intend to solve https://drupal.org/node/2273393. With an abstract EntityEmbedDisplay, I could add sub-classes for Entity Reference formatters, or other field formatters. This would allow users to create arbitrary ways to display embedded entities as well outside of just entity_view(), which will be very useful.

Tasks:
- [x] Convert to plugins
- [x] Figure out if derivative plugins can work for field formatter plugins - yes they work!
- [x] Integrate with PluginFormInterface
- [x] Ensure all new methods and classes are documented.
- [x] Updated docs about new data attributes.
Yes, because whatever is inside viewElements() results in $build[0]['#printed'] being a 'TRUE' value, which means it will not get output unless we call show() on it.