add addIdentificationData,{MSnExp,MSnSet}-method

Dear Laurent,

this PR introduces the `addIdentificationData` method for `MSnExp` and `MSnSet`.

Here is an example from the `addIdentificationData` manual page:

    ## find path to a mzXML file
    quantFile <- dir(system.file(package = "MSnbase", dir = "extdata"),
                    full.name = TRUE, pattern = "mzXML$")
    ## find path to a mzIdentML file
    identFile <- dir(system.file(package = "MSnbase", dir = "extdata"),
                    full.name = TRUE, pattern = "mzid$")

    ## create basic MSnExp
    msexp <- readMSData(quantFile)

    ## add identification information
    msexp <- addIdentificationData(msexp, identFile)

    #     spectrum passthreshold rank calculatedmasstocharge experimentalmasstocharge chargestate ms-gf:denovoscore ms-gf:evalue ms-gf:rawscore ms-gf:specevalue assumeddissociationmethod
    #X1.1        1          TRUE    1               645.0375                 645.3741           3                77     79.36958            -39     5.527468e-05                       CID
    #X2.1        2          TRUE    1               546.9633                 546.9586           3                39     13.46615            -30     9.399048e-06                       CID
    #X3.1        3            NA   NA                     NA                       NA          NA                NA           NA             NA               NA                      <NA>
    #X4.1        4            NA   NA                     NA                       NA          NA                NA           NA             NA               NA                      <NA>
    #X5.1        5          TRUE    1               437.2997                 437.8040           2                 5    366.38422            -42     2.577830e-04                       CID
    #     isotopeerror            pepseq modified modification isdecoy post  pre end start       accession length                                                                 description
    #X1.1            1 VESITARHGEVLQLRPK    FALSE           NA   FALSE    A    R 186   170 ECA0984;ECA3829    231 DNA mismatch repair protein;acetolactate synthase isozyme III large subunit
    #X2.1            0     IDGQWVTHQWLKK    FALSE           NA   FALSE    A    K  62    50         ECA1028    275          2,3,4,5-tetrahydropyridine-2,6-dicarboxylate N-succinyltransferase
    #X3.1         <NA>              <NA>       NA           NA      NA <NA> <NA>  NA    NA            <NA>     NA                                                                        <NA>
    #X4.1         <NA>              <NA>       NA           NA      NA <NA> <NA>  NA    NA            <NA>     NA                                                                        <NA>
    #X5.1            1           LVILLFR    FALSE           NA   FALSE    L    K  28    22         ECA0510    166                    putative capsular polysacharide biosynthesis transferase
    #                 databaseFile identFile npsm
    #X1.1 erwinia_carotovora.fasta         2    2
    #X2.1 erwinia_carotovora.fasta         2    1
    #X3.1                     <NA>        NA   NA
    #X4.1                     <NA>        NA   NA
    #X5.1 erwinia_carotovora.fasta         2    1
<hr />
Beside `addIdentificationData` this PR also introduces a few other functions:

A new replacement method: `fileNames<-` for `MSnProcess`, `MSnSet` and `pSet` (for internal use, not exported).
<hr />
`utils.vec2ssv`, `utils.ssv2vec`, `utils.list2ssv`, `utils.list2vec` to convert a `vector`/`list` into a Semicolon Separated Value (`character` vector of `length == 1`) and the other way around.

    utils.vec2ssv(1:3)
    # [1] "1;2;3"
    utils.ssv2vec("1;2;3")
    # [1] "1" "2" "3"

<hr />
`utils.leftJoin` which is a modified version of `base::merge` to merge `data.frames`. In contrast to `base::merge` it preserves the order of the `x` (the left) `data.frame` and doesn't create new columns with suffixes for columns present in both `data.frames` but overwrites the content of the `x` (left) with the content of the `y` (right).

    x <- data.frame(id=1:7,
                    fn=LETTERS[1:7],
                    add=1:7,
                    stringsAsFactors=FALSE)
    y <- data.frame(id=4:2,
                    fn=LETTERS[4:2],
                    foobar=letters[4:2],
                    stringsAsFactors=FALSE)
    z <- data.frame(id=6:7,
                    fn=LETTERS[6:7],
                    foobar=letters[6:7],
                    stringsAsFactors=FALSE)
                    
    d <- utils.leftJoin(x, y, by=c("id", "fn"), exclude="add")
    d
    #  id fn foobar
    #1  1  A   <NA>
    #2  2  B      b
    #3  3  C      c
    #4  4  D      d
    #5  5  E   <NA>
    #6  6  F   <NA>
    #7  7  G   <NA>
    
    utils.leftJoin(d, z, by=c("id", "fn"))
    #  id fn foobar
    #1  1  A   <NA>
    #2  2  B      b
    #3  3  C      c
    #4  4  D      d
    #5  5  E   <NA>
    #6  6  F      f
    #7  7  G      g

Please have a look at the changed/added documentation of `MSnExp`, `MSnSet` and `addIdentificationData` and the corresponding section in the *MSnbase-demo* vignette.

**known problems**

1. This PR introduces the *finalize bug* documented and circumvented in https://github.com/lgatto/MSnbase/pull/21 (https://github.com/lgatto/MSnbase/pull/21 or an alternative and better solution has to be applied first).
2. The complete functionality depends on the latest version of mzID and because the NAMESPACE problem is still not resolved (https://github.com/thomasp85/mzID/pull/20) you have to use my  [namespace branch](https://github.com/sgibb/mzID/tree/namespace) (and we could only merge if the newest mzID is distributed to bioc).
3. The example output in the vignette is divided by the *Quality Control* plot (*Figure 2*). I did not fix it yet because I assume you want to change/extend the Identification part (and then everything would be rearranged and maybe automatically fixed). 

**todo**

1. extend vignette
2. use correct version number of mzID in `DESCRIPTION` (current: `1.1.4`, must be `>= 1.1.5` or whatever the number of the new/upcoming version in bioc-devel would be)

Best wishes,

Sebastian

P.S.: Who could have known that implementing a simple `cbind` needs four days and causes a lot of new problems :wink: