Keep fastq id

I wanted to propose this change to the other developers.  There are a couple of little problems that emerge when using FastqLoader and FastqStorer to manipulate fastq files whose id lines don't follow the Illumina format:
1. there's no way to retrieve the original id line from the fastq records being read;
2. there's no way to write an arbitrary fastq id line either.

An example where this an issue in practice, I wanted to convert base quality values from Illumina to Sanger encoding in a few gigabytes of fastq files provided by some sequencing center.  The id lines were not in the "structured" Illumina format so I had no way to manipulate the data while **keeping the same read ids**.  With this patch that's now possible.

For the most part, this change is backwards compatible. It adds a new field "id" to the tuples generated by FastqLoader, which can be easily ignored.  There is one small thing though that might cause some surprises:  if the "id" field exists in the tuple passed to FastqStorer, it will be used as the id line rather than constructing one from the meta data ("id" will be passed to FastqOutputFormat as the key, rather than passing null).  I suspect this isn't a big issue, but I wanted to get some feedback before committing.