Treat linker warnings as errors
Fix build error in ppapi_decryptor.cc

We were getting the following build error on Windows:

    FAILED: ninja -t msvc -o obj\webkit\media\crypto\webkit_media.ppapi_decryptor.obj -e environment.x86 -- cl.exe /nologo /showIncludes /FC @obj\webkit\media\crypto\webkit_media.ppapi_decryptor.obj.rsp /c ..\..\webkit\media\crypto\ppapi_decryptor.cc /Foobj\webkit\media\crypto\webkit_media.ppapi_decryptor.obj /Fdobj\webkit\support\webkit_media.pdb
    vendor\chromium\src\base\memory\ref_counted.h(250) : error C2027: use of undefined type 'webkit::ppapi::PPB_Buffer_Impl'

            vendor\chromium\src\webkit\plugins\ppapi\content_decryptor_delegate.h(30) : see declaration of 'webkit::ppapi::PPB_Buffer_Impl'

            vendor\chromium\src\base\memory\ref_counted.h(248) : while compiling class template member function 'scoped_refptr<T>::~scoped_refptr(void)'

            with

            [

                T=webkit::ppapi::PPB_Buffer_Impl

            ]

            vendor\chromium\src\webkit\plugins\ppapi\content_decryptor_delegate.h(163) : see reference to class template instantiation 'scoped_refptr<T>' being compiled

            with

            [

                T=webkit::ppapi::PPB_Buffer_Impl

            ]

    vendor\chromium\src\base\memory\ref_counted.h(250) : error C2227: left of '->Release' must point to class/struct/union/generic type

I believe something about our __declspec(dllexport) declarations is
causing this to happen. We work around this by defining an out-of-line
destructor for ContentDecryptorDelegate so ppapi_decryptor.cc doesn't
have to compile its destructor.
Fix build error in dom_storage_message_filter.cc

The error was:

    FAILED: ninja -t msvc -o obj\content\browser\dom_storage\content_browser.dom_storage_message_filter.obj -e environment.x86 -- cl.exe /nologo /showIncludes /FC @obj\content\browser\dom_storage\content_browser.dom_storage_message_filter.obj.rsp /c ..\..\content\browser\dom_storage\dom_storage_message_filter.cc /Foobj\content\browser\dom_storage\content_browser.dom_storage_message_filter.obj /Fdobj\content\content_browser.pdb
    vendor\chromium\src\base\memory\ref_counted.h(239) : error C2027: use of undefined type 'dom_storage::DomStorageNamespace'

            vendor\chromium\src\webkit\dom_storage\dom_storage_context.h(36) : see declaration of 'dom_storage::DomStorageNamespace'

            vendor\chromium\src\base\memory\ref_counted.h(237) : while compiling class template member function 'scoped_refptr<T>::scoped_refptr(const scoped_refptr<T> &)'

            with

            [

                T=dom_storage::DomStorageNamespace

            ]

            vendor\chromium\src\webkit\dom_storage\dom_storage_host.h(55) : see reference to class template instantiation 'scoped_refptr<T>' being compiled

            with

            [

                T=dom_storage::DomStorageNamespace

            ]

    vendor\chromium\src\base\memory\ref_counted.h(239) : error C2227: left of '->AddRef' must point to class/struct/union/generic type

It looks like the compiler was generating a copy constructor for
DomStorageHost, so now we disallow that.
Get rid of ICU's global new/delete

They cause linker errors due to conflicts with the operator new/delete
defined by the CRT.
Fix linker warning about _utf8_countTrailBytes_46

The warning:

    sqlite3.lib(sqlite.sqlite3.obj) : warning LNK4049: locally defined symbol _utf8_countTrailBytes_46 imported

This means that this symbol is decorated with __declspec(dllimport),
which is bad. Defining U_UTF8_IMPL fixes this problem, but causes
another error:

    third_party\icu\public\common\unicode\utf8.h(62) : error C2734: 'utf8_countTrailBytes_46' : const object must be initialized if not extern

For some reason ICU doesn't use U_CFUNC when exporting
utf8_countTrailBytes, but does use it when defining it or importing it.
Adding U_CFUNC fixes the above error, because it marks the symbol
`extern`.