Addressed appropriate exception messages.
Addressed modifying ResolutionException.
Addressed lazily throwing an Resoultion exception

in the LazyResolve methods.
Added missed ArgumentNullException tests

for LazyResolve methods.
Addressed testing methods created by template.
Addressed removing braces for one-line clauses.
Addressed guarding recursive resolution.
Addressed appropriate exception messages.
Slightly refactored.
Addressed removing the generic parameter.
Introduced the RecursionGuard class.
Addressed renaming methods to throw.
Added testing many resurive steps.
Addressed ResolveImpl methods by Text Template.
Addressed confirming non-remained

after recursion exception.
Made Resolve methods thread-safe

from recursion inspection.
Improved recustion inspection

using the ThreadStatic attribute instead of the ThreadLocal class.
Moved the ThrowRecursionException method.
Incremented patch version

in order to indicate that
- The recursion inspection is a fix rather than a new feature.
- Some properties of the ResolutionException class was removed, which
  introduces breaking change but as the change is trivial and it's less
  possibility that a user depends on that properties in his code,
  treating it as fix is appropriate.