ArgMaxLayer with top k predictions

To meet the [needs for multiple top predictions](https://github.com/BVLC/caffe/issues/499#issuecomment-46939141) in #499 and #598, the argmax is extended to output the top k results.

Unlike the implementation of the top k accuracy layer in #531, the argmax layer doesn't assume the input probabilities to be sorted. It picks the top k results with a priority queue.
 
Candidate reviewers:
@sguada who authored #421 Argmax layer
@robwhess who authored #531 Top-k accuracy
@shuokay who asked #598 How to make top-k prediction

@kloudkl is there a reason we need a stable sort here?  Can't we drop the second term of the OR here?  It seems both unlikely that classes will have exactly the same probability and, if they do, unimportant that we keep them in the (arbitrary) order of the assigned indices.  The second term here just seems to me to just add extra clutter to the code.