Separate undef and false for Perl expression in Haml

Sometimes I want to insert value `0` or `"0"` (it's real ZERO value not false :) with Haml's `= PERL_EXP` syntax. But it is not possible right now since `Text::Haml` regard it as false and ignore.

Inserting Perl works well like:

```haml
%div
  = undef || 0
```

But inlining it doesn't work:

```haml
%div= undef || 0
```

And I changed some behavior of current version of `Text::Haml` for consistency like Perl:

``` haml
%foo= 1 if 1
%bar= 1 if 0
%baz= 1 if undef
= "1" if 1
= "0" if 0
= "0" if undef
```

Perl works:

```
perl -Mwarnings -E 'say do { 1 if 100 }'
perl -Mwarnings -E 'say do { 1 if 0 }'
perl -Mwarnings -E 'say do { 1 if undef }'
```

Please check it and if this is not proper or doesn't make sense, just ignore it. :)