changed injection to cache dependency strategies for better prototyping perf; moved some handling from get() to getStrategy() since that was where some of the logic really needs to be; added a new prototype strategy for handling circular deps better