call destructors before Object dealloc

...

...

...
Merge pull request #468 from galchinsky/llvm32clayhpp

call destructors before Object dealloc
convert array test to unittest
Drop multielement array construction from single element

This fixes construction of single-element array from non-copyable:

```
record NonCopyable ( ... );

main() {
    var b = array(NonCopyable());
}
```

Array constructor removed:

```
[T,n]
overload Array[T,n](elt: T): returned:Array[T,n]
```

It is over-overloading that causes problems like this.
Remove dead code
Merge remote-tracking branch 'jckarter/master'
Do not crash on recursive alias functions

Fixes #473. Thanks to Dmitry Galchinsky (@galchinsky) for the fix.
Add MULTI_PATTERN as invalid static object to improve error reporting.
Prohibit access to function when resolving function predicate

Like this:

```
[when foo()]
foo() {}
```
simplify String?, ContiguousString? and SizedString? protocols

String? is an alias to Sequence? of Char, and nothing more.
UniString? protocol

UniString? is a string of UniChar

`UTF8[String]` and `Vector[UniChar]` are examples of `UniString?`
overload printTo for UniString?

Print `UniString?` as UTF-8-encoded string instead of comma-separated
characters
Update Archlinux AUR package to use llvm-3.2
Merge remote-tracking branch 'jckarter/master'