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 forgot to mention that horrible thing, it's just there as a temporary fix but I planned to remove it.
I leaved there, because seems that `caffe_set` only works in CPU mode, https://github.com/BVLC/caffe/blob/dev/src/caffe/util/math_functions.cpp#L59 just calls `memcpy`directly, instead something like https://github.com/BVLC/caffe/blob/dev/src/caffe/util/math_functions.cpp#L91.

Should I open a new PR to fix that? Should be pretty trivial