Implement ==

Closes #4. This also modifies `all`. Previously we would have returned `NA` instead of `false` if an `NA` value was encountered before two unequal values; now we return `false` if any two values are unequal, `NA` if all extant values are equal but there are NAs, or `true` if all values are equal and there are no NAs. Unfortunately the amount of code necessary to handle all possible combinations of AbstractArray/BitArray/DataArray/AbstractDataArray is quite large.