Fixes #2532810

The third argument to set (or _set) is not just for events.
Its purpose is to establish the reason for setting the attribute.
In Widgets, this usually means the source of the change by
indicating {src: 'UI'} (or its pre-defined constant).
Though it is usually used to avoid reflecting into the UI
what came from the UI, and is something done through events,
it is still useful even if you don't have a UI or events.

I have added those opts to both the setter and the validator
so they can decide on accepting or rejecting the value
based on the origin of the data.

Provided an extra test to try the setter with the extra argument
This change should be fully backward compatible.

Inadvertently stripped trailing spaces on the changed sources.
Changed the landing page to describe the opts argument.
Corresponds to issue #2532810 pushed in a separate commit.
Make opts an empty object when undefined.
When opts is passed as a string, turn it into an object with a single property 'src' with the original opts
as its value set to that string.
Added a test for that.
Fixed as per Ericf's recommendations except:

opts = opts || {} in AttributeCore

If this were to be moved to each of the public and protected methods,
there would be 4 copies of it in each of set, _set, setAttrs
and _setAttrs for no real purpose at all since opts is not used
in any of them.

The files have been stripped of trailing spacesand
long lines have been shortened except
where a Y.log statement required the line to be all in one
line so it could be effectively deleted in the 'raw' version.
In those cases, /*jshint maxlen:200*/ was added and turned back
to 150 immediately afterwards
Removed the test for using a string for the opts argument
Fixed a minor JSHINT error, an argument not used nor documented.
Merge branch '2532810' of git://github.com/Satyam/yui3-1 into attr-opts

Conflicts:
	build/attribute-core/attribute-core-coverage.js
	build/attribute-core/attribute-core-debug.js
	build/attribute-core/attribute-core-min.js
	build/attribute-core/attribute-core.js
	build/attribute-events/attribute-events-coverage.js
	build/attribute-events/attribute-events-min.js
	build/attribute-observable/attribute-observable-debug.js
	build/attribute-observable/attribute-observable.js
	src/attribute/js/Attribute.js
	src/attribute/js/AttributeCore.js
	src/attribute/js/AttributeObservable.js
	src/attribute/js/ComplexAttribute.js
Merge pull request #1 from ericf/attr-opts

Merge Attribute options changes with the current `master`
Merge branch 'dev-master' into Satyam-2532810
Merge branch 'Satyam-2532810' into dev-master
Update Attribute's change history.