find instance by type

If an instance does not exist, it now will search by type as well
before it creates a new one.
more overloads

added more overloads for ObjectPool.Spawn()
extension functions fixed

some extension functions were not actually extensions, just plain
static functions