call destructors before Object dealloc

...

...

...
Record is Copyable? or Movable? only if all its fields are
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.
add more options for code generation
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
fix intrinsic verifier
improve intrinsic error messages
drop Function, rename FunctionBody -> Function

If someone needs Function to be refcounted, Function can be explicitly
wrapped in sharedpointer, like this:

```
var functionPtr = new(Function((x: Int) -> x * 2));
var thirtyFour = functionPtr^(17);
```

Note that sharedpointers are not thread-safe (thus Function weren't
thread-safe until this patch), so simple function copying could
cause memory problems.
Update Archlinux AUR package to use llvm-3.2
Merge pull request #479 from crabtw/intrinsics

Fix __intrinsics__ module for LLVM 3.2
Fix asExpression ref return type