changes to the interface for PDL::Factor

- make it so that an arrayref of levels can be passed in
- as well as an arrayref of integer values that range from 0 to
  length(levels) - 1
- the interface needs to be rethought to be flexible, but easy to use
- also, right now the enum starts at 0 and does not work over other
  cases, such as 1-based indexing or non-continuous ranges
- need to look at other implementations of categorical variables
make sure PDL::null() is called
add level information to stringification