Split FenceImpl into FenceNVImpl and FenceSyncImpl, and refactor.

Move Windows-specific code out of Fence.cpp. Split FenceImpl
based on suggestions on previous review
https://chromium-review.googlesource.com/221805/ . Refactored
further based on code review feedback and added first unit tests.

BUG=angleproject:774

Change-Id: I630034e1788e48ddb7722016ca22da474e785798
Reviewed-on: https://chromium-review.googlesource.com/222954
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Kenneth Russell <kbr@chromium.org>
Refactor TLS management.

Use cross-platform APIs and constants, and conditionally compile the
Windows-specific DllMain.

BUG=angleproject:783

Change-Id: I8fd2708ab0925cb3207010eb0e759cfc055183ab
Reviewed-on: https://chromium-review.googlesource.com/222955
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Kenneth Russell <kbr@chromium.org>