cipher.scm (<pigpen-cipher>): New type

* pigpen/cipher.scm (<pigpen-cipher>): New type.
  (pigpen-cipher?, make-pigpen-cipher, get-cipher-name)
  (get-cipher-alphabet, get-cipher-substable, add-cipher!): New
  procedures.
  (get-cipher): Update.
  (%unicode-mapping, %ascii-mapping, %none-mapping)
  (%ascii-substitution-table, %substitution-table): Remove.
* pigpen/char.scm (char->pigpen-char): Use <pigpen-cipher>.
  (list->pigpen-char): Likewise.
* pigpen/encoder.scm (encode): Use <pigpen-cipher>.
* pigpen/string.scm (pigpen-string->string): Add a hack to make it
  work with <pigpen-cipher>.