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
no it isn't redundant, `need_back_prop_` became necessary introducing in this filter_layer the possibility to filter a number not known a priori of both data and label blobs.
Data blobs need backprop, at the contrary of label blobs, but becuase we are not aware of which are data and which are label, we need to know which indices correspond to blobs that need backprop.
For example a filter_layer like this:

    layers {
        name: "filter"
        type: FILTER
        bottom: "selector"
        bottom: "label0"
        bottom: "data0"
        bottom: "label1"
        bottom: "data1"
        top: "filtered_label0"
        top: "filtered_data1"
        top: "filtered_label0"
        top: "filtered_data1"
    }

should know that `bottom[1]` and `bottom[3]` don't need backprop, instead `bottom[2]` and `bottom[4]` need it (`bottom[0]` never needs backprop because is the selector).
So the `need_back_prop` vector would be `[ 0 1 0 1]`