Rewrite WIP.

Parser rewritten (has a bug in quote handling)
Now handles rows with varying numbers of columns.
Header row support is temporarily removed.
Semicolon-delimiter support removed.
Plugin simplified, new functionality added.

Header row is now a selectable option when sorting, not a per file setting.  I didn't like how it was stored in the User's preferences.
Ascending vs. Descending sort is also selected when sorting, not a separate command.
Sorting attempts to sort numerically before falling back to text sort.
Added Insert column and Delete column features.

Notable TODO items:
+ The code which detects the selected column doesn't handle quoted values in the CSV table, this is not good.
+ After reformatting the document, the cursor position should be restored to the cell that was selected.
+ Some syntax for embedding cells to be evaluated.
WIP on fixing GetColumnIndexFromCursor.
Add .gitignore
Add feature to delete empty trailing columns.
Update readme.
Reworked row parser to fix unhandled quoting cases.
Just some todo list updates.
Committing todo list updates always makes me think of more stuff.
Fix column selection when columns include quoted commas.
Split sort back into Ascending / Descending variants.  Use header row is still a popup choice.

Added Select column command to block select the current column.  (Works in justified and collapsed modes)  When used with justified columns, this allows a variety of editing operations, such as quickly adding, moving, and deleting columns.

The selection regions are now saved & restored around edit operations.

Fixed an exception when doing an operation when the last line of the file was selected, and the line was empty.
Add keymaps, fix typo exception introduced by previous commit.  (Yay dynamic languages)
README.md update
README.md update
README.md update
README.md update
README.md update
First pass of evaluating cells using NumPy, bound to Ctrl+, =

Example data:

hello,col0,sdfadfasdf,col1,col2
aa,bb,,c,100.0
1,2,,3,24
4,3,,2,001
",a    ",b,,c,.45
,,,,
,,,0.45,"=<m[1:5,4].min()"
Next WIP on NumPy integration.  Input and output ranges mostly working.

E.g. "[:]<=m[1:1,+0].min()" means fill one column to the left with the min of row 1, this column.  Will document syntax thoroughly once it's 100% working.
Simpler way to check for NumPy
Don't strip blank lines when parsing, but also don't add an extra newline at the end of the file when formatting.
Match formula output range to NumPy style, [start:end] where start is inclusive and end is exclusive.
Instead of using regexes to fix up expressions inside the formula, just make local variables row, col, frow, fool (formula row, formula col) available to the expression.
Remove prints, useless comment.