Add tab key handler to term.read

Adding this handler was necessary to allow creation of auto-complete mechanism
Add autocompletion to shell
Move hint check to onKeyDown
Made getMatchingPrograms more accurate
Repaired file completion behavior
Hint function can now return tables and iterators

Returning table or iterator will display set of available completion options. When user will return table, he/she should also provide prompt function for (re)drawing prompt if one is used is his/her program
Fix term.lua completion list printing
Fixed the fix
Update hintHandler

Updated hintHandler to return table when tab was dual-tapped and there are multiple possible completions
Changed term.read hint behaviour

When hint function returns table, It no longer writes it to screen. The result is cached, and user may view hintd by pressing tab key repetitively.
Update shell to work with new term.lua
Merge https://github.com/magik6k/OpenComputers
Cleaned up and simplified tab-completion logic a little.
Added shift-tab to inverse cycle suggestions.
Starting completion from cursor location now (sh just eats everything after the cursor for now).
Now properly resolving relative paths based on working directory in tab complete.