Distinguish required IDL extended attribute values, remove most optional

This CL distinguishes extended attributes with a required value with any
value allowed ("*") from optional values ("|*"), and removes
most optional values.

This leaves only 1 optional value, Reflect.
Reflect is used in ~300 places, ~20 with a value, ~280 without.
From discussion and spec, it’s clearly useful for the value to be optional.
(The IDL attribute should reflect a content attribute; these usually have
 the same name, but sometimes not, hence the optional value.)
https://sites.google.com/a/chromium.org/dev/blink/webidl/blink-idl-extended-attributes#TOC-Reflect-a-

Also some refactoring to Python IDL validator.

Followup to:
Give explicit argument to EnabledAtRuntime (IDL extended attribute)
https://codereview.chromium.org/23667002/

Review URL: https://chromiumcodereview.appspot.com/23564003

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