Properly handle compiler options.

Support the return* and report* compiler options, propagating them properly.

Renamed option `out_dir` to `outdir` to match the erlang compiler option naming.
`out_dir` kept as alias for backwards compatibility.

Added `no_load` option for cases where the compiled template is not to be used right away.

Include checksum also when compiling templates from binaries rather than files. The source file name reported by `module_info(source)` is changed to `/<text>` instead of the current path at compile time.

`compile_dir` branch of the code not tested. :/

Fixes #28, #116.
Touch up compiler code formatting.
Add binary option.

This concludes the fixes for compiler options.
Close #116.
Clarify doc on compiler options.
Fix escapejs return type
Merge pull request #117 from tomekowal/fix_escapejs_return_type

Fix escapejs return type
Check template checksums also for binaries.

When compiling a template not from file (e.g. from a binary value),
keep track of the checksum the same way as is done when compiling templates on file.

Moved default value for compiler_options back to the record definition.
Adopt CONTRIBUTING from rebar.
Add check and dialyze targets (#111)

But don't fail a build on dialyzer warnings (not yet at least).
Work in progress on implementing #98.
Collect errors/warnings from compile:forms/2 properly.

Reverted the out_dir -> outdir option rename.
Move compiler_options more into the background as an advanced option.
Clean up generated code.

Fixes #109.
We had too many warnings from the generated code on for loops,
in order to continue working on #98.
Add tests for error reporting.
commented R16B03 in .travis.yml for now..
Merge branch 'pu-98'

Close #98.
Replace our po scanner with the one used by zotonic.

Fixes #23.

The example data given in issue #23 now parses OK:
```
1> po_scanner:parse_po_file("23.po").
[{header,"Project-Id-Version: Project\nReport-Msgid-Bugs-To: \nPOT-Creation-Date: 2012-02-10 17:50+0100\nPO-Revision-Date: 2012-02-10 17:50+0100\nLast-Translator: Thomas Schaaf <schaaf@komola.de>\nLanguage-Team: komola UG <team@komola.de>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Poedit-KeywordsList: _;gettext;gettext_noop;_t\nX-Poedit-Basepath: .\nX-Poedit-Language: German\nX-Poedit-Country: GERMANY\nX-Poedit-SourceCharset: utf-8\nX-Poedit-SearchPath-0: .\n"},
 {"PAGE_NOT_FOUND","Seite nicht gefunden!"}]
```
Add auto_escape option.

In order to be Django compatible, the `auto_escape` option should be
used when compiling the template.

Fixes #80.
Fix for dialyzer warnings in our customized yecc header (#111)
Fix code style.
Remaining issues reported by dialyzer

Fixes #111.

A few warnings I won't bother resolving are:

    erlydtl_filters.erl:534: Expression produces a value of type 'undefined' | {integer(),integer(),integer()}, but this value is unmatched
    erlydtl_runtime.erl:45: The call gb_trees:lookup(Key::any(),{integer(),_}) does not have an opaque term of type gb_tree() as 2nd argument
    erlydtl_runtime.erl:54: The call dict:find(Key::any(),Tuple::tuple()) does not have an opaque term of type dict() as 2nd argument