Refactor how we identify present libraries, locations, callnumbers, and ...

...mhld.

Closes #405 
This PR also addresses some un-ticketed issues around MHLD locations w/o any MHLD data and which MHLD locations we display on the search results.

## Examples

### 10178529
---
#### Before
![10178529-before](https://cloud.githubusercontent.com/assets/96776/3560275/9066d40c-0961-11e4-920c-df21861ea332.png)

#### After
![10178529-after](https://cloud.githubusercontent.com/assets/96776/3560276/97ae2116-0961-11e4-93af-7fff84f690e1.png)

### 10495972
---

#### Before
![10495972-before](https://cloud.githubusercontent.com/assets/96776/3560278/aaa40fec-0961-11e4-91f0-1b37853fabf3.png)


#### After
![10495972-after](https://cloud.githubusercontent.com/assets/96776/3560279/adca75c6-0961-11e4-9629-d43bd3c75f6d.png)


### 10390590
---

#### Before
![10390590-before](https://cloud.githubusercontent.com/assets/96776/3560282/c1774ffe-0961-11e4-8aa9-ecdceb56f3cc.png)


#### After
![10390590-after](https://cloud.githubusercontent.com/assets/96776/3560283/c51c319c-0961-11e4-9e59-25dc78cb2a20.png)

@mejackreed it will show up that way `(no callnumber)` in other results views as well as the record view (although maybe I'm miss-understanding your question).