Add duk_def_prop(), rework defineProperty()

Add a C API binding for Object.defineProperty(): duk_def_prop().

Because that name conflicts with internal calls, rename them from
duk_def_prop*() to duk_xdef_prop().  This rename also makes it clearer that
the internal duk_xdef_prop*() calls have non-compliant, internal semantics.

Also reimplement Object.defineProperty() and Object.defineProperties() (and
duk_def_prop()) so that they share the same internal helpers, and there is
no need for a temporary property descriptor object which is unnecessary churn.
Detailed changes:

- New helper to prepare (validate and normalize) property descriptors
- New helper to implement Object.defineProperty() internals, leaving
  out validation of the property descriptor
- Reimplement Object.defineProperty() using the new helpers
- Reimplement Object.defineProperties() using the new helpers
- Reimplement duk_define_property() using the new helpers, so that a
  temporary property descriptor object is no longer created
API testcase for duk_def_prop()
API doc for duk_def_prop()
Add guide link to duk_def_prop()