Code block changes:

- Return (pre <code>) not (pre (code <x>)).

- Don't allow spaces before/after optional lang. It was causing
  problem when lang was not provided at all. (If actually important to
  allow such spaces, can loop back later and fix it the right away.)