drm/i915: Make *_crtc_mode_set work on new_config

This shouldn't change the behavior of those functions, since they are
called after the new_config is made effective and that points to the
current config. In a follow up patch, the mode set sequence will be
changed so this is called before disabling crtcs, and in that case
those functions should work on the staged config.
drm/i915: Convert shared dpll reference count to a crtc mask

This will be used in a follow up patch to properly release shared DPLLs
without relying on the shared_dpll field in pipe_config.
drm/i915: Move dpll crtc_mask and hw_state fields into separate struct

The new struct will be used in a follow up patch to allow a current and
a staged config to exist for the same shared DPLL.
drm/i915: Add infrastructure for choosing DPLLs before disabling crtcs

It is possible for a mode set to fail if there aren't shared DPLLS that
match the new configuration requirement or other errors in clock
computation. If that step is executed after disabling crtcs, in the
failure case the hardware configuration is changed and needs to be
restored. Doing those things early will allow the mode set to fail
before actually touching the hardware.

Follow up patches will convert different platforms to use the new
infrastructure.
drm/i915: Covert HSW+ to choose DPLLS before disabling CRTCs
drm/i915: Covert ILK-IVB to choose DPLLS before disabling CRTCs
drm/i915: Covert remaining platforms to choose DPLLS before disabling CRTCs
drm/i915: Remove crtc_mode_set() hook

There's no users left after the conversion to calculate clocks before
disabling crtcs during mode set.
drm/i915: Don't store current shared DPLL in the new pipe_config

Now that shared DPLLs configuration is staged, there's no need to track
the current ones in the new pipe_config since those are released before
making the new pipe_config effective.