Handle vim versions lacking gettabvar().
Refactor hunk functionality.
Move logic out of main plugin file.
Add hunk previewing.
Optimise removal of all signs where possible.
Merge from the original gitgutter