Refactoring

 * Internal functions now have leading underscore
 * renaming:
  * account_name -> account
  * password_length -> length
  * bits_per_char -> char_width
  * generate_salt -> encode salt
   * to match the bcrypt function
 * Rewrote some documentation

calculate_char_width and threshold are probably both going to change.
It probably should be the percent difference between the overlap and
the total range, as that more-directly represents the evenness of the
algorithm. Also, in cases of hitting max_char_width, the most even
width found should be chosen, not max (under the new algorithm, they
may be the same value, further experimentation is needed).
testing: encode_salt, calculate_char_width

encode_salt has tests, works. calculate_char_width should be working now that I fixed a bug in its implementation (which is why I thought I needed to change the algorithm). Shame on me for not writing a test case for achieving the threshold after the first try. That is just obviously bad testing. On the plus side, the new test explicitly tests that percision is being handled properly as well.
Merge: (because I cannot handle a 1-man git repo)

Conflicts:
	test_hashpass.py