Modified validate_communication() to use read_communication_from_file()
This commit adds a script to convert between Thrift protocol embeddings.

Usage is:

```python
python convert_protocols.py \
  --input-file /path/to/input/file
  --output-file /path/to/output/file
  --direction <known conversion>
```

`<known conversion>` is a categorical directive, in the form
  `<input-encoding>-to-<output-encoding>`
The --input-file must be in the input format; the output file will
be in the `<output-encoding>`

`<known conversion>` must currently be either
  * `binary-to-compact`: Convert the `TBinaryProtocol` encoded input
  file to a `TCompactProtocol` encoded output file
  * `compact-to-binary`: Convert the `TCompactProtocol` encoded input
  file to a `TBinaryProtocol` encoded output file
made it easier to add to the known conversion types
Merge branch 'binary-compact-converter' into 'master'

Thrift encoding converter

@charman, this quick script provides an easy way to convert between encodings.

Usage is simple:
```python
python convert_protocols.py \
   --input-file /path/to/input/file \
   --output-file /path/to/output/file \
   --direction <known conversion>
```

This can also be called programmatically through `convert_protocols.convert`:

```python
def convert(input_file_path, output_file_path, input_protocol_factory, output_protocol_factory):
    """
    Convert an input file (to be read in as an input_protocol_factory type)
    to an output file (with encoding output_protocol_factory type).

    * input_file_path: Path to the input file (on disk)
    * output_file_path: Path the output file (on disk)
    * input_protocol_factory: Callable factory function for input encoding, e.g., TBinaryProtocol.TBinaryProtocolFactory.
    * output_protocol_factory: Callable factory function for output encoding, e.g., TCompactProtocol.TCompactProtocolFactory.
    """
```

@twolfe, @mthomas, @mgormley, @ccostello: This is useful if you have legacy `TBinary` files.

See merge request !2
read_thrift_from_file() no longer falls back to TBinaryProtocol

The read_thrift_from_file() function now always assumes that Thrift
objects were serialized using TCompactProtocol.  It no longer tries to
use TBinaryProtocol if the initial deserialization appears to have
failed.

Addresses Travis' request in #10
Updated to Concrete schema v3.9.0
Added '--text' flag to concrete_inspect.py
Fixed bug when validating an invalid dependency parse

The code was generating an unhandled exception if a dependency parse
was not a fully connected graph, instead of logging that the parse
was invalid.
Updated test suite to use TCompactProtocol encoded Communication
Fixed bug when validating an invalid constituency parse

The code was generating an unhandled exception if a constituency parse
was not a fully connected graph, instead of logging that the parse
was invalid.
validate_dependency_parses() now checks Dependency.gov values

As requested by Matt Gormley
refactored functions
added input and output file type testing
Merge branch 'binary-compact-converter' into 'master'

gzip support: Binary compact converter

@charman this amends the protocol formatter to take in either a gzip concatenation of communications (`cat my_comms* | gzip -c > my_gzip.gz`), or regular files (a single communication as a standard binary (computer, not Thrift) file).

This handling is done automatically through the `mimetypes` package. It's probably (?) as robust as running `file` at command line on the file (but that's just my guess).

Note that this would be easy to extend to other types as well.

See merge request !3
Updated to Concrete schema v3.10, bumped version to v3.10.0