Update TagFile and Tag classes for Python3

There is an issue with the NavigateToDefinition commands in ST3. The
root cause of this was not determinable so the binary search function
in TagFile was developed from scratch. The (working) end result
appears to be more legible than the original so this replaces it.

- Create new Tag class to enable custom sorting of tag lines by
  column. This allows the ``exact_matches`` and ``starts_with``
  functions to be removed.
- Rename old Tag class to TagElements to better clarify new meaning.
- Reimplement binary search algorithm in TagFile to use new Tag class
  and the ``with`` construct.
- Rename resulting binary search function as ``search`` to clarify
  purpose.
- Remove unnecessary ``compare`` function