support layer specs instead of just names in flatland.jiraph.core

If layer-spec is a vector, get-layer descends through the child layers
after looking up the initial layer in *graph*.

Also add get-edge-ids that returns edge ids where :exists is true. This
lays the groundwork for getting rid of get-incoming as a special method
in jiraph.

Instead of:
    (get-incoming :foo "id-1")

You will use:
    (get-edge-ids [:foo :incoming] "id-1")