Custom extend method, Added 'plain object' type

Borrowed jQuery's unit tests and ideas, though. 'plain object' type from
jQuery. document is too much to recurse through.
Unit Tests for Extend

from jQuery
https://github.com/jquery/jquery/blob/master/test/unit/core.js