Split [StrictTypeChecking] into [TypeChecking=Interface|Nullable|String]

Prep for adding support for unrestricted double and float;
no changes to generated bindings.

In order to add proper type-checking to Blink code, we need to do this
on an opt-in basis, to avoid breaking the web interface.

There are lots of different type checking, so simplest is to put these
as values for a single extended attribute, namely [StrictTypeChecking].

Currently there are three types of type checking:
* Interface: if type is interface, does value implement interface?
* Nullable: if value is null, is type nullable?
* String: is a value stringable?

I've split these as 'Interface', 'Nullable', and 'String';
for *almost* all existing [TypeChecking] these are all turned on,
but now we can turn them on separately.

Also:
* Tests added

Docs updated:
http://www.chromium.org/blink/webidl/blink-idl-extended-attributes#TOC-TypeChecking-i-m-a-p-

I'll follow up with:
* [TypeChecking=Unrestricted]
  for floats and doubles, and then we can apply this to existing code,
  tearing out lots of boilerplate checks in Blink!

R=haraken
BUG=354298
BUG=321518

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

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