Teradata support

As per overview in #304 to resolve #168 and #7.
Just create a new branch from master and you can cherry pick the whtiespace changes there and open new PR.