I just updated the code with gpx-clean.py. It can clean out bad points, but it also has functions to reduce the number of points in a GPX file drastically - a factor 30 i my test cases.
python gpx-clean.py --all input.gpx out.gpx
will usually create a much much smaller out.gpx where the lines between points covers pretty much the same area. There are arguments for reducing more or less too.