added const access for operator[] (issue #7)
cast to array and cast to object implemented, refactored shared-ptr and clone() methods to utilize std::make_shared (see issue #7)
removed noreturn attribute because not supported on gcc 4.7 (issue #10)