Append "last-resort" fonts to FontGroup
Restructure last-resort font choosing
Fix code-style in last-resort font selection
auto merge of #479 : caitp/servo/issue-479, r=jdm

This seems to occur in places where "font-family" is specified.

On my mac, "about-mozilla.html" renders correctly (it uses `font-family: serif;` in several places)

However, "ligatures.html" fails to render when specifying `font-family: Calibri;`

I haven't dug in very deep yet, but it seems like maybe falling back on a default font would be a more correct or safe behaviour than just dying.

I'll be able to look at this a bit more next week if it's still open

---

I should add, this is not limited to the mac, dholbert had run into this on linux x64 as well (died testing about-mozilla.html)

```
rust: task failed at 'assertion failed: fonts.len() > 0', /Users/caitp/git/servo/src/components/servo-gfx/font_context.rs:130
rust: domain main @0x7fba3980c010 root task failed
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: task failed at 'killed', /Users/caitp/git/servo/src/compiler/rust/src/libcore/pipes.rs:281
rust: ~"tracing 4430275392:"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing 4430275440:"
rust: ~"tracing parent"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing 4430275728:"
rust: ~"tracing parent"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing prev sibling"
rust: ~"tracing 4430275920:"
rust: ~"tracing parent"
rust: ~"tracing prev sibling"
rust: ~"tracing 4430275824:"
rust: ~"tracing parent"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing next sibling"
rust: ~"tracing prev sibling"
rust: ~"tracing 4430275872:"
rust: ~"tracing parent"
rust: ~"tracing 4430275776:"
rust: ~"tracing parent"
rust: ~"tracing next sibling"
rust: ~"tracing 4430275488:"
rust: ~"tracing parent"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing next sibling"
rust: ~"tracing 4430275680:"
rust: ~"tracing parent"
rust: ~"tracing prev sibling"
rust: ~"tracing 4430275584:"
rust: ~"tracing parent"
rust: ~"tracing first child"
rust: ~"tracing last child"
rust: ~"tracing next sibling"
rust: ~"tracing prev sibling"
rust: ~"tracing 4430275632:"
rust: ~"tracing parent"
rust: ~"tracing 4430275536:"
rust: ~"tracing parent"
rust: ~"tracing next sibling"
Assertion failed: (!borrow_list), function delete_this, file /Users/caitp/git/servo/src/compiler/rust/src/rt/rust_task.cpp, line 80.
```