Use libbacktrace for backtraces if it's available

Description
====
This pull adds support to use the new GCC libbacktrace which is part of gcc 4.8. Libbacktrace can use debug info as well as the symbol table to find function names, so it's way superior to our current solution. It's probably also more portable. This code obtains the symbol information lazily. At first it only obtains the pointers, the symbol name, line, etc are only obtained when the backtrace is being printed.

**I would not recommend merging this until the unittests work again but it's ready for review.**

Performance
====
When actually obtaining the complete backtrace (e.g. calling .toString on the exception, dumping it to the console) this code is 2x slower than the current glib backtrace. It is still 2x faster than the dmd exception+glib backtrace code.

However, when not using the backtrace information by calling toString or similar functions the new code is 3.5x faster than the current (not lazy) glib backtrace code. This is as fast as a minimal backtrace implementation (only obtaining the frame addresses) can be.

BTW: Not using any exception backtrace at all by overwriting Runtime.traceHandler is still 3x faster than this minimal/lazy backtrace. G++ exceptions are slightly slower than D exceptions without backtraces.

Example Output:
====
Example output (with -g)
```
std.conv.ConvException@/opt/gdc/include/d/4.8.1/std/conv.d(1811): Unexpected 'H' when converting from type string to type int
----------------
0x407fa5 void std.conv.convError!(immutable(char)[], int).convError(immutable(char)[], immutable(char)[], ulong)
	/opt/gdc/include/d/4.8.1/std/conv.d:52
0x407ea2 int std.conv.parse!(int, immutable(char)[]).parse(ref immutable(char)[])
	/opt/gdc/include/d/4.8.1/std/conv.d:1811
0x40a2e7 int std.conv.toImpl!(int, immutable(char)[]).toImpl(immutable(char)[])
	/opt/gdc/include/d/4.8.1/std/conv.d:1600
0x407330 int std.conv.to!(int).to!(immutable(char)[]).to(immutable(char)[])
	/opt/gdc/include/d/4.8.1/std/conv.d:276
0x403d9e int test.doSomeThing(immutable(char)[])
	/home/jpf/Dokumente/Code/gdc/objdir/test.d:10
0x403d66 _Dmain
	/home/jpf/Dokumente/Code/gdc/objdir/test.d:5
0x4142ee extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain()
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:620
0x414a4e extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:595
0x414c7f extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:630
0x414a4e extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:595
0x414be7 _d_run_main
----------------
```
Output without -g
```
std.conv.ConvException@/opt/gdc/include/d/4.8.1/std/conv.d(1811): Unexpected 'H' when converting from type string to type int
----------------
0x407fa5 void std.conv.convError!(immutable(char)[], int).convError(immutable(char)[], immutable(char)[], ulong)
	???:0
0x407ea2 int std.conv.parse!(int, immutable(char)[]).parse(ref immutable(char)[])
	???:0
0x40a2e7 int std.conv.toImpl!(int, immutable(char)[]).toImpl(immutable(char)[])
	???:0
0x407330 int std.conv.to!(int).to!(immutable(char)[]).to(immutable(char)[])
	???:0
0x403d9e int test.doSomeThing(immutable(char)[])
	???:0
0x403d66 _Dmain
	???:0
0x4142ee extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runMain()
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:620
0x414a4e extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:595
0x414c7f extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:630
0x414a4e extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:595
0x414be7 _d_run_main
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:639
0x3ad6621734 ???
	???:0
0x403c64 ???
	???:0
----------------
```

Sample output for segmentation fault in unittests:
Before:
```
unittest, crashing...
./a.out[0x41f075]
/lib64/libpthread.so.0[0x3ad6e0efe0]
./a.out[0x40572a]
./a.out[0x405dcd]
./a.out[0x41f1c8]
./a.out[0x4190d9]
./a.out[0x41f2f1]
./a.out[0x418d2d]
./a.out[0x418b2f]
./a.out[0x418cc8]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3ad6621735]
./a.out[0x4055e5]
Speicherzugriffsfehler (Speicherabzug geschrieben)
```

After:
```
unittest, crashing...
Segmentation fault while running unittests:
0x41f021 extern (C) bool core.runtime.runModuleUnitTests().extern (C) void unittestSegvHandler(int, core.sys.posix.signal.siginfo_t*, void*)
	../../../../gcc-4.8.1/libphobos/libdruntime/core/runtime.d:314
0x3ad6e0efdf ???
	???:0
0x4056ca void test.__unittestL8_1()
	/home/jpf/Dokumente/Code/gdc/objdir/test.d:12
0x405d6c test._D4test9__modtestFZv
	/opt/gdc/include/d/4.8.1/std/conv.d:104
0x41f1a7 extern (C) bool core.runtime.runModuleUnitTests().int __foreachbody13(ref object.ModuleInfo*)
	../../../../gcc-4.8.1/libphobos/libdruntime/core/runtime.d:383
0x419078 int rt.minfo.moduleinfos_apply(scope int delegate(ref object.ModuleInfo*))
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/minfo.d:116
0x41f2d0 runModuleUnitTests
	../../../../gcc-4.8.1/libphobos/libdruntime/core/runtime.d:373
0x418ccc extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void runAll()
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:629
0x418ace extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).void tryExec(scope void delegate())
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:595
0x418c67 _d_run_main
	../../../../gcc-4.8.1/libphobos/libdruntime/rt/dmain2.d:639
0x3ad6621734 ???
	???:0
0x405584 ???
	???:0
Speicherzugriffsfehler (Speicherabzug geschrieben)
```