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

Please use curly braces for loop bodies. (Although Google C++ style guide doesn't require it for single line statements, as far as I know we always use explicit curly braces in Caffe.)