Modify alignment lazy loading

 LAZY_LOAD -> DEFAULT_LAZY_LOAD
 Use soft references for SAMRecord and ReadSequence, in addition to hard references (ie normal ones). Should only get garbage collected when memory is low
Make AsciiEncoder behavior not platform-dependent

When printing features to temp file, use constant EOL_CHAR (set as "\n") as opposed to writer.println. BEDTools wasn't behaving right with windows-style line endings
Copy launch scripts to dist dir as part of build

Not part of target yet, but add targets for copying run scripts (igv, igvtools, igvtools_gui) into distribution directory as part of build.
only those scripts appropriate for the OS currently being used are copied
Move some general process IO tests to RuntimeUtilsTest
Update RuntimeUtils.jar.

Add getObjectSizeRecursive to better calculate memory usage. Add build task for creating RuntimeUtils.jar, not part of any main tasks (would need to run it manually)
Rebuild RuntimeUtils.jar, should be pretty decent. Could also consider using Memory-measurer. that has some external dependencies but not many
Ignore testGetSize_String
Move org.broad.igv.dev.plugin package -> org.broad.igv.cli_plugin
Rename xml tag for command line plugins from igv_plugin -> cli_plugin
Add output of FeatureSource when saving a track.

Any FeatureSource which is Persistable will be output. Right now only PluginSource (and descendants) are persistable. May wish to rethink how we are saving this info, must be an easier way
Use JAXB to unmarshall Argument from plugin spec. Change spec so argument InputType (type) attributes are uppercase (some as InputType values).

We have lost some relative path parsing ability; previously Argument library URLs were relative to the spec path, that's gone. However that attribute was in existence anywhere so no backwards compatibility is lost
Have PluginSpecReader unmarshall parser tag into new Parser class (instead of map)

change encoding_codec/decoding_codec to encodingCodec/decodingCodec. Was causing some bugs with marshalling/unmarshalling
Fix typo in doc
Fix for JIRA-1884

This issue brought to light an issue with the TDF format outputted by igv tile. When tiling for the entire genome, the result is dependent on the specific ordering of chromosomes used. However, this ordering is never stored in the file. The previously used "chromosomes" attribute stored the chromosome names which were in the file being tiled, in the order in which they were found in the file. However, the whole genome view (properly) used the chromosome ordering provided by the Genome.  The result was that if the chromosome ordering was different when the TDF was loaded than when it was created, the whole genome display would be incorrect. Chromosome ordering was modified between 2.1.30 and 2.2.0 to put small chromosomes at the end, so files generated from <2.1.30 are likely to display incorrectly on 2.2.0 (and vice versa)

We take the following steps to correct this:

0. Write out the chromosomes in genome order to the TDF file, rather than file order.  As near as I can tell, the specific ordering of the chromosomes was not being used anywhere, so changing the outputted order should have no effect elsewhere.

1. When loading from TDFDataSource in whole genome view, call TDFDataSource.isChrAllValid, which examines the order of chromosomes in that field. If the field is absent, or if the ordering is different than the current Genome, the whole genome view is assumed to be invalid, and no data is returned

1a. If the TDF file is < 4 (current version as of this commit is 4, previous was 3), we know that the chromosome names are listed in file order but displayed in Genome order. We apply the old chromosome name comparator to the loaded chromosome names, and if they match the current genome we consider the data valid.

2. If the data is considered invalid, nothing is displayed for whole genome view. This is not ideal, might be better to recalculate or at least tell the user whats up (it gets logged but no dialog), but no data is better than wrong data.

3. TDF version has been changed to 4, and magic intro string is TDF4

Tests for the results of step 1 and 1a are included; we have wig files for dm3 and hg18, generated under 2.1.30 (version 3) and 2.2.1 (version 4)
Change ChromosomeNameComparatorTest -- wasn't properly testing for mitochondria.
Add Tool, Command classes for PluginSpecReader and use JAXB to unmarshal them instead of parsing more manually
Remove @XmlRootElement annotation from Argument.

 It was only there for testing and we've worked around it.
Add @XmlAccessorType(XmlAccessType.NONE) so we don't accidentally marshall/unmarshall properties we don't want
Have zoomTo make setEnd = -1

There was a bug which could be reproduced like this:
0. Open IGV
1. Enter a short locus, say chr1:100, zooming almost all the way in
2. Click somewhere else on the cytoband panel, changing to that location
3. Press the zoom out button

Expected result:
zoom to level 22, from 23 (or something like that)

Actual result:
zoom went nearly all the way out, level 1 or 2

Reason being that the scale was being calculated really wrong because setEnd was set in step 1 above but never cleared
This should clear in when appropriate (I hope)
Remove duplicate zoom calculation