CrowdSource is tested, and more bugs were found

This last hour was “fix one bug, create 5 more”, but everything should
be working now.

_File:
- created a function, setEmptyToDefault(), which takes a list of
attributes to set to the default if they are empty.

FieldTest_File:
- used setEmptyToDefault() after loadFieldTestInfo() finishes
- changed all instances of File.__(self, ___) to self.__(). Apparently,
you can call a parent function without specifying that the function is
the parents. The code just looks a little cleaner now.

CrowdSource_File:
- changed all instances of File.__(self, ___) to self.__(). Apparently,
you can call a parent function without specifying that the function is
the parents. The code just looks a little cleaner now.
- called setEmptysToDefault() at end of blocks in loadCrowdSourceInfo()
- cleaned up __str__ a little

_Test:
- line 88, remove empty strings from self._text (was causing problems)
- added a few more error checks for bad PING tests
- added a final check that should hopefully catch any tests that exit
with no other error message than “bad exit value”

PING_Test:
- changed attribute from is_Mobile to is_outputType1. A bit more
descriptive
- check for output type 1 only consists of looking for “Ping statistics
for” in dataString. This is the most obvious difference always present
in the different output types.
- added some small loops in parsePings() that creates 0ms pings in
self.Times if they were never created. There should always be 10, as 10
are always sent
- added some formatting to __str__ so that ping times print out as 2
lines rather than one long one

UDP_ServerReport:
- __str__ only prints out datagrams out-of-order if there were
datagrams out of order

basic_utils:
- added the new error types to the list errorTypes

test_parser:
- the help option actually prints out stuff with newline characters
between lines.