Fixed issue with setter not receiving opts, if using AttributeObservable.

The feature to pass `set()` opts through to the setter was added in 3.8.1
but was not working for AttributeObservable (only for AttributeCore).

This fixes it, while trying to keep things tight for the 80% no-opts case.

The use of the `fire(type, facade, opts)` signature may have a perf impact
on the 20% opts case, but it keeps the 80% path tight. Other options
required us to add additional `if (e._attrOpts)` type checks to the 80%
path to keep things clean.

We can extend the optimization in custom event for this signature if it
bubbles up as a perf issue.
Added set with opts benchmark test
Merge branch 'attribute-setter-opts' into dev-master
Build for AttributeObservable set with opts.

All tests pass through yogi test --no-cli (aside from currently failing
throttle test).

NOTE: This commit in and of itself has a performance hit for the
set(attr, val, opts) case, compared to the prior commit. However,
we're expanding the underlying event argument parsing optimization,
to optimize the path for setting with opts.

Look for this in a following commit. Numbers are in the pull req:
https://github.com/yui/yui3/pull/722