Completion alignment improvements

This branch:
- Properly aligns the completion window to the beginning of the string, across font size changes.
- Shows the window above or below the current line, depending on available space.
- Never takes up more than half the sreen with the completions; scrolling is enabled to see more.
- Changes the colors of the currently selected completion to make it more legible.