Public / Private definition visibility

Adds a public attribute to definitions, causing private definitions to be unavailable during normal `container.find` and `container.get` calls, but available as service dependencies.

Addresses #2 
Could you just move this condition in a private method? It could be more readable.