linkedin updates synclet is personal
A missed step
Page through Facebook Page data

This one is rare for users, but if they have a lot of pages, it was recursing.
The `getAdministeredPages` function felt like an extraneous layer, but as I
remove the other uses of `getPages`, I suspect there will be a useful pattern to
consolidate.
Initialize sandboxed configs in testSynclet

This matches what `taskman` does, which is to initialize empty objects in the
case that any config data is absent. This avoids us having to check or set
`pi.config` at the beginning of every synclet.
Make Facebook photos page

I didn't make albums page on the assumption that very few people will have
*that* many of them. We also haven't paged any FQL yet.

I wanted to just update the album's `since` time as we gathered photos, but it
interacts poorly with `limit`. Basically, `limit` is applied first, so on the
second call, we get nothing back.

Instead, I parse the `after` out of Facebook's returned paging URL and use that
on the next call. I wanted to use the whole URL they give back, but it doesn't
include an `access_token` and this way fit better with existing code like
`apiUrl`.
Update Facebook synclet tests

Just mashing around URLs for Fakeweb.

I'm checking `album.since` with `_.isNumber` as opposed to just `if
(album.since)` because set it to `0` on the first run and otherwise it wouldn't
be included.
Merge branch 'optimize-facebook' into peas-in-a

* optimize-facebook:
  Update Facebook synclet tests
  Make Facebook photos page
  Initialize sandboxed configs in testSynclet
  Page through Facebook Page data
  A missed step
  linkedin updates synclet is personal