Validate empty dictionary construction

Rework the dialyzer type system for tighter specifications
of valid dictionary types for pure_binary attributes and
values. Add PropEr testing of dictionary types and sizes
that are created using epode_dict:new/2.
Validate non_binary dictionary constructors
Add epode_dict:from_list/1 testing
Test epode_dict:to_list/1
Log variance of key/val sizes during tests
Check for crashes with invalid map/xlate resulting types
Crash epode_dict:map if it generates non-binaries in pure_binary mode
Add pure_binary map test case
Allow new dictionary type after xlate
Convert intentional crashes to {error, Reason} returns
Test map/3 for atom_attrs and any dictionaries
Add first epode_dict:xlate pure_binary -> atom_attrs test case
Add testing of xlate atom_attrs to pure_binary
Validate dictionary conversions
Sort expected props, remove debug logging
Test any to atom and any to bin xlate
Merge implementation of dictionary, mapping and translation