Add more details to the source maps

- Previously, the whole rules were mapped to the beginning of the original
  rule. Now, we go deeper: Map comment to comment, declaration to
  declaration, selector to selector, etc.

- Added tests for the generated source maps.

- Improved documentation.

The reason is to be able to use sheet in ai/autoprefixer. Therefore I've
made one seemingly unrelated change: The semicolon of the last declaration
of a rule is only omitted when optimizing. Which is what people probably
expect anyway.