Don't fail silently if .init isn't a function #cuttingFeatures

Because of the check for inheriting a non-pjs class, the only way for
that to happen is if you monkey-patch .init to something that isn't a
function, in which case you'll get a

    TypeError: Object ${thing you monkey-patched .init to} has no method 'apply'

which I feel like is excellent behavior.

<0.4kb now!

Conflicts:
	README.md
	src/p.js
Simplify check if inheriting from a non-Pjs class

If proto.init is truthy but not a function, like 1 or something, you'll
get a

    TypeError: Object 1 has no method 'apply'

which I feel like is excellent behavior.

If we're inheriting from a Pjs class but `proto.init` is overridden to a
falsy value, we'll think we're inheriting from a non-Pjs class and set
`proto.init` to the superclass constructor, which isn't the most
defensive, fail-early thing to do, but is also what happened prior to
this commit.

Really, to be defensive in our non-pjs check, we should check
`('init' in proto)`, so if `proto.init` is overridden to anything
but a function it'll TypeError like above.
only set the .init property if it's actually missing
Merge branch 'refactor.minify-optimizations'