added support for tab - a few new bugs may have been created
buffer cursor movement logic completely reworked