storage classes for various scopes with namespace.
make injection option as an object.
move Forger related class under Forge directory.
use new Forge directory and namespace.
use Storage/IdOnly instead of Singleton (which is essentially the same class).
created Types directory for injecting non-object such as string.
move Option under Forge.

This class should belong to Forge since this is an option object used to forge an object.
uses Storage/IdOnly instead of  Singleton.
maybe Option should have className to forge.
use Option object for storing DI information for objects.

at least ForgeTest passed. need more testing.
use IdOrNamespace object to store values.
merge is wiser; check if scope/namespace/etc. are set to overwrite.

do not overwrite if the value is null (i.e. not set).
getValue to return pre-set value, or an option object if class name is given.
implement new way of doing the singleton.

there were too many ways to specify singleton before. now only one way, therefore, some tests were removed.
test IdOrNamespace class, removed test for Values class.
test Storage/IdOnly object.
fixed $values class. removed setOption no longer used.
test IdWithNamespace.
fetch should return null if not found.
add exists method to all Storage classes.