Don't calculate preserve_pattern in buffer constructor

Calculating it in Haml::Options means it's only calculated once per
engine instance, which yields about a 9% performance gain on rendering
compiled Haml.

This change should be backported to Haml 3.1 to try to get 3.1.9's
performance closer to that of 3.1.4. With this change alone it should be
close.
Convert tabs to spaces
Use destructive methods where possible in build_attributes

This yields between 4-8% improvement in benchmarks on compiled Haml.
Replace Rails 3.2.3 textarea hack with general solution.

This change outdents the content and closing tag of any "preserved"
element (by default textarea, pre and code) that spans multiple lines.

This avoids problems encoding whitespace inside these tags.
Merge branch 'stable'

Conflicts:
	lib/haml/buffer.rb
	lib/haml/options.rb