Adds case-insensitivity switch
Factored out settings struct
Mildly neater setup
Fixed formatting
Adds show-all switch
Uses c++11 constructs
Removes using namespace std
Adds show totals switch, -O2 level optimisation by default
Adds ignore-non-alpha-numeric flag