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.

**All** library tests, including the new ones added for this feature pass.
✔ [Total]: Passed: 10863 Failed: 0 Total: 10958 (ignored 95)

Thanks to @satyam (with an 'M') for the original implementation/pull request (https://github.com/yui/yui3/pull/512)