Adding selection support

The multiple commits are caused by me uploading code via Github. I will rebase it all before I merge. 
Small nit: `text += lineText + "˙n";` is a bit more readable.