Use ES5 getters, setters and Object.create instead of __proto__ etc

This fixes pure JS issues with IE9+