only define migration and default hash types if they haven't been at a higher level

* Note use of atom_to_binary came about because rebar define directives
  cause an internal compile error when binary values were used.