Respect order of input values in unique()

This is more consistent with the documentation of Base.unique().
levels() is defined for AbstractArray, DataArray to be the same
as unique() except that in the latter case NAs are skipped; for
PooledDataArray, it's more efficient than unique() since it merely
returns the pool, ignoring the order of appearance, and possibly
returning values which are not present in the data.

Fixes the first part of #92.