IDL compiler: [CustomConstructor] arguments and overloading

This finishes [CustomConstructor];
all we need to do is compute interface length correctly.

Updated docs:
https://sites.google.com/a/chromium.org/dev/blink/webidl/blink-idl-extended-attributes#TOC-CustomConstructor-i-

BUG=239771
NOTRY=true

Review URL: https://codereview.chromium.org/100683004

git-svn-id: svn://svn.chromium.org/blink/trunk@163986 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Make qcmsOutputDeviceProfile() thread-safe

Chrome may now use multiple image decode threads in the renderer and they
can call qcmsOutputDeviceProfile(), which is not thread-safe. Use a mutex
to quard the "once-only" qcms monitor profile initialization code.

This change depends on bug 327484 and the fix for that has been submitted
in https://src.chromium.org/viewvc/chrome?view=rev&revision=240120, which
updated chromium with the upstream, thread-safe libqcms patch.

Some might find the comments in the upstream libqcms patch confusing when
considering if profiles can be used on different threads so, to elaborate
here, we compute pre-cache data for the monitor profile when we create it
and that creation is now guarded by a mutex in this change.

The pre-cache data is ref-counted, and the ref-count is never less than 1
because the pre-cache is stored inside the static monitor profile pointer
|outputDeviceProfile| which is never deleted.

The monitor profile and its pre-cache data are only read, after creation,
and the pre-cache is thread-safe, ref-counted if used. Hence, the monitor
profile |outputDeviceProfile| can be safely used from any thread.

BUG=314012,327484,327944

Review URL: https://codereview.chromium.org/108873010

git-svn-id: svn://svn.chromium.org/blink/trunk@163987 bbb929c8-8fbe-4397-9dbb-9b2b20218538