Improve arguments check in Container#reset

As per @stefanpenner’s concerns, checking `arguments.length` is more 
strict and can prevent a reset of the entire cache if `fullName` is
mistakenly set to a falsey value.

Also, adds docs for `reset`.
Consolidate injection concatenation in buildInjections.
Remove items from caches before destroying the items.

If `member.destroy` errors, caches won’t be corrupted.
Prevent re-registration of factories that have been resolved.

An explicit `unregister` should be required to prevent re-registration
of a factory that has been resolved (and therefore probably used to
instantiate objects).
Replace some helper methods with inline implementations.

`addInjection`, `addTypeInjection`, and `initRules` are arguably more
clear inline rather than separate methods that take a large number of
arguments.
Base Container constructor assertion on boolean

Avoid the possibility that `registry` could be a function that could
be called as part of the assertion.