Imputing values while joining dataframes
## description

Currently, as specified in the [documentation](http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html), the standard action for concatenations in case of missing columns is to fill them with a `NaN`:

```python
df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],
                   columns=['letter', 'number', 'animal'])
df1 = pd.DataFrame([['a', 1], ['b', 2]],
                   columns=['letter', 'number'])
joined = pd.concat([df1, df3], sort=False)

```

Output:

|    | letter   |   number | animal   |
|---:|:---------|---------:|:---------|
|  0 | a        |        1 | nan      |
|  1 | b        |        2 | nan      |
|  0 | c        |        3 | cat      |
|  1 | d        |        4 | dog      |

It would be nice to have the possibility of specifying the value to be used for the imputations.
This will avoid another operation for changing the `nan` with the desired imputation, but also operations of upcasting  and subsequent downcasting.

As example, say the colum which will be imputed with `nan` originally hosted integers; since `np.nan` is a float, with the actual imputation the column in the joined dataframe will host floats. But maybe we actually want that column to stick with integers, and so we have firstly to change the nans with (say) `0`, and then downcast again to integers.

## desired behavior

To specify the imputation for each column. Something like:

    imputation_dict = {'animal' : "mammal",
                      'number' : 0}
    joined = pd.concat([df1, df3], sort=False, imputations=imputation_dict)

to obtain as result:

|    | letter   |   number | animal   |
|---:|:---------|---------:|:---------|
|  0 | a        |        1 | mammal      |
|  1 | b        |        2 | mammal      |
|  0 | c        |        3 | cat      |
|  1 | d        |        4 | dog      |
