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.
Please pull the definitions of the member functions out of the class to reduce the indentation.  Also, please put the class into an anonymous namespace.