core: don't use Array#reduce for basis.object.merge()

Using Array#reduce in basis.object.merge leads to exception in browsers
that doesn't support for Array#reduce. Because basis.object.merge is
using before Array#reduce polyfill is applied (in config processing).
Also using a loop with arguments helps browser to optimise merge
function.
basis.entity: fix exception on using Object.defineProperty() in IE8