TypeResolutionTable

As described in #91.
Perhaps some defensive coding is warranted and manually throw an `ArgumentException`. However, as far as I can tell, we are going to iterate the sequence twice.

That's why I thought that `Enumerable.Single` would be fine:
* If the entry is there, return it 
* If the entry doesn't exists, throw
* If more than one entries found, throw