Treat formats and buffers as interchangeable when they are mixed together.

During the compiler's optimization pass, "format" globs (basically whitespace) are stripped out. The remaining strings, "buffers", are concatenated into a single entity.
If whitespace compression is disabled, formats and buffers are all written, but the two types are not concatenated together. Because most code is broken up by newlines, this results in highly-inefficient chunking of writes that-- in the case of large templates-- causes Dust to exceed the call stack limit.

This patch adds dust.config.whitespace (set by default for now to false for backwards compatibility; by default there is zero change with or without the patch) to toggle the whitespace stripping behavior. When the flag is set to true (respect whitespace), the new format/buffer concat logic is invoked.

Also adds --whitespace=true|false (default false) flag to dustc.

Closes #498
Remove the warning log when you attach a new Stream event

If there are no listeners on an event yet (like 'data'), you get a WARN the first time you add one. That's silly.
Merge pull request #511 from sethkinast/whitespace-optimization

Treat formats and buffers as interchangeable when they are mixed together in order to prevent stack overflows with large templates and add a whitespace flag to dust.config
Don't instaevaluate generated body_ functions. Instead, place them into the context and attempt to render their containing block.

Closes #512.
Merge pull request #513 from sethkinast/no-eval-bodies

Treat compiled body functions as blocks to render instead of functions to evaluate.   Dust body functions are now flagged with .___dustBody to differentiate them from functions set in the context.
Merge pull request #515 from sethkinast/no-stream-event-warn

Remove the warning log when you attach a new Stream event
Release v2.5.0