Filter layer

Filter_layer developed as discussed in #1448, implemented following the suggestions by @sguada and @longjon (paragraph 2(i)).

This layer accepts 2+ bottom blobs, the first blob acts as a selector, so it should be a vector s={0,1,2, .. n} in [0,1], and the remaining blobs are blobs to be filtered. Each value of 1 in the selector vector means that the items at the corresponding indices int the bottom_blobs[1+] will be kept, on the contrary a values of 0 means the items with corresponding symbols will be filtered out.
So only non-filtered items will be forwarded and afterwards will receive backpropagation. 

As param the filter_layer needs a *need_back_prop vector*. This is needed because some blob could contains labels, and therefore will not need backpropagation. The need_back_prop vector as the same size as the top vector, and accepts 1s and 0s depending on whether it should be backpropagated or not.

This PR needs #1483 and #1484
I'm not sure about `lint` errors because `make lint` doesn't show anything (everything seems ok), about the `indices_to_forward` error, I think it access random data when `n > indice_to_forward.size()` and then always enter in `(n != offset)` case, I'll fix this.

By the way, there is a problem I have with `CheckGradientExhaustive`. I've not enter deeply in the code so I could be wrong, but I think that that method doesn't expect different `num` between top and bottom blobs, so the gradient is not correctly normalized on data.
As a workaround I used `CheckGradientExhaustive(&layer, this->blob_bottom_vec_,
        this->blob_top_vec_, 0)`, but probably makes this test useless.