move the unique_id and source to display column logic

the unique_id and source to display columns logic will most likely be required
by all backends.

I moved this logic to the SourceResult wich is now a private class that can
be retrieved with the factory function make_result_class.

make_result_class parameterize the SourceResult class from it's argument to
avoid having to many arguments on the __init__
add the type column back in DisplayColumn
format the lookup result with the same format as the spec