PTFM-8103, PTFM-8359 fixed dx_bed_to_spans script
Factor out reverse_complement into a module.
Use str.translate to do reverseComplement (now unicode aware).

This results in a speedup of about 14x for reverseComplement on unicode
objects of length 128.
Add unit tests for reverse_complement.
Fix bad exit code in dx-bed-to-spans after 5d526d0.
Error on invalid sequence is converted to an AppError.
Make output of dx-bed-to-spans machine parseable.
Minor: make test sequence file hidden.
PTFM-8632: add dx tag/untag support for projects and tests
Pass args from DXApp(let).run to DXExecutable.run in a generic way.
Clean up handling of test control env vars.

NOTE: this changes the semantics of DXTEST_FULL so that it also implies
DXTEST_FUSE.

- Define three independent classes of features that might not be
  testable in certain environments: creating apps, running jobs,
  mounting FUSE filesystems. All are off by default.
- dxpy_testutil defines all the variables (TEST_CREATE_APPS, etc.) that
  control whether specific classes of tests can be run.
- Individual tests use @unittest.skipUnless to skip tests if they find
  themselves not running in an appropriate environment.
[PTFM-8492] A potential fix for hanging issue

Sidenote: boost::this_thread::sleep() is deprecated in libboost
(we still use it at a few places, but reducing dependency on it)
PTFM-8633: expose dx [un]set_properties for projects

also, dx describe --verbose will return properties for projects
Trim trailing whitespace in dx.py
PTFM-8694: add --extra-args to dx run

Also make dx rmproject -y not ask for confirmation if there are running
jobs for better test cleanup and consistency.
Correct out-of-date docstring
Remove distribute/setuptools from the virtualenv after dependency installation is complete
dx download glob support
Fix issue with prefix removal
Fork fnmatch into dxpy.utils.pathmatch to provide path glob expansion