Take storage specs and seriously.

Also:
* Support extern block scope declarations
* Allow globals to be declared multiple times, but only
  initialized once
* Allow auto, extern and static specs to be in any order together
  with other type specificers (like int, long)
* Produce better error messages