Fix error and improve appearance of results in type-directed search

This is a fix for issue https://github.com/idris-lang/Idris-dev/issues/1266.

Additionally, I've addressed many of the suggested improvements in issue https://github.com/idris-lang/Idris-dev/issues/1267. Results for type-directed search are now displayed almost exactly like results for :apropos. There's one difference: here I have symbols which indicate how the result type relates to the searched type:
- `=` indicates the types are isomorphic
- `<` indicates the result type is more general than the search type
- `>` indicates the result type is less general than the search type

For example, here is a search excerpt now:
```
Idris> :s List a -> List a
= Prelude.List.reverse : List a -> List a
Return the elements of a list in reverse order.
...
< Prelude.List.toList : Foldable t => t a -> List a
Convert any Foldable structure to a list.

> Prelude.List.transpose : List (List a) -> List (List a)
Transposes rows and columns of a list of lists.
```

Also, this addresses https://github.com/idris-lang/Idris-dev/issues/1269. Along the way, I happened to refactor some of the `Output` code to eliminate some of the code repetition, which I hope is a good thing!