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)

(no callnumber) is good.


On Jul 14, 2014, at 9:26 AM, Jack Reed <notifications@github.com> wrote:

> In lib/holdings/callnumber.rb:
> 
> > @@ -36,7 +40,11 @@ def reverse_shelfkey
> >        item_display[7]
> >      end
> >      def callnumber
> > -      item_display[8]
> > +      if item_display[8].present?
> > +        item_display[8]
> > +      else
> > +        '(no callnumber)'
> I guess this is more of a @jvine thing I guess. Referring back to #434 on what should be present in the bar when there is no callnumber present.
> 
> —
> Reply to this email directly or view it on GitHub.
>