Add exception handling for Binary sniffers. Image sniffers can fail for large files because signed integers are used internally, this catches that and other potential problems.

Traceback (most recent call last):
  File "/opt/galaxy/web/tools/data_source/upload.py", line 432, in <module>
    __main__()
  File "/opt/galaxy/web/tools/data_source/upload.py", line 421, in __main__
    add_file( dataset, registry, json_file, output_path )
  File "/opt/galaxy/web/tools/data_source/upload.py", line 155, in add_file
    type_info = Binary.is_sniffable_binary( dataset.path )
  File "/opt/galaxy/web/lib/galaxy/datatypes/binary.py", line 38, in is_sniffable_binary
    if format["class"]().sniff(filename):
  File "/opt/galaxy/web/lib/galaxy/datatypes/images.py", line 203, in sniff
    headers = get_headers(filename, None, 1)
  File "/opt/galaxy/web/lib/galaxy/datatypes/sniff.py", line 179, in get_headers
    for idx, line in enumerate(file(fname)):
SystemError: Negative size passed to PyString_FromStringAndSize
Rework checking binary files. Why read in line by line if only going to check 100 characters? This approach to just read first 100 characters is cleaner, more efficient, and hopefully less error prone. Should avoid the following exception caused when checking large files:

Traceback (most recent call last):
  File "/opt/galaxy/web/tools/data_source/upload.py", line 432, in <module>
    __main__()
  File "/opt/galaxy/web/tools/data_source/upload.py", line 421, in __main__
    add_file( dataset, registry, json_file, output_path )
  File "/opt/galaxy/web/tools/data_source/upload.py", line 283, in add_file
    if check_binary( dataset.path ):
  File "/opt/galaxy/web/lib/galaxy/datatypes/checkers.py", line 58, in check_binary
    for chars in temp:
SystemError: Negative size passed to PyString_FromStringAndSize
Merge with latest galaxy-central.