Adding "scope" (#9)
The `scope` defines when a service should be created, or when it can be reused. It must be one of the following values:
- `prototype`: A new instance will be created whenever the service is requested or injected into another service as a dependency.
- `container` (default): The instance will created once for this container, and then it will be returned in future requests. This is sometimes called a singleton, however the service will not be shared outside of the container.
Fixes #2