rbind.fill performance and consistency improvements

This is a substantial refactoring of `rbind.fill` that improves performance for combining large numbers of groups and improves consistency of behavior for different column types.

* Avoid inducing array copies for primitive/list types, ensuring linear performance (fixes #148).
* Special handling for `factor` and `POSIXct` types to avoid copying and ensure linear performance in those cases as well.
* Dims are handled independently of type and other attributes; factor-arrays, char-arrays and list-arrays are supported.
* Arrays of any dimension are supported.
* Colnames of matrix columns are preserved (like `rbind`.)
* Factor columns `rbind`ed to other data types are coerced to character.
* Consequently `match_df` and `join` handle combinations of character and factor on the index column (fixes #128).

Supporting performance measurements here: http://crowding.github.io/plyr/rbind-fill.html

![performance over revisions](http://crowding.github.io/plyr/figure-plot-rev.svg)