D3D: Implemented cache for dynamic render states

Most render states are now cached, rather than created every time, saving roughly 50% of ApplyState().
This is similar to https://github.com/dolphin-emu/dolphin/pull/365, except only limited to render state caching. Additionally, pending render state is kept in a compact structure, which avoids significant cost of hashing and comparing D3D state descriptions in https://github.com/dolphin-emu/dolphin/pull/365.
Is there any reason to have an own file for this class, rather than just putting it into GfxState.h? Seems overly confusing to have state management spread over GfxState, StateCache and Render.