Paginador de problemas

La lista de problemas es cada vez más grande y un paginador es
necesario. Implemente un paginador sencillo y una mini barra de búsqueda 
(en realidad de momento solo acepta criterios de ordenación) para que sea
más fácil explorar la lista de problemas.

Hasta ahora la tabla de problemas se llenaba y se ordenaba usando
Javascript, fue necesario mover algunas cosas al servidor para lograr la
funcionalidad, por ejemplo, se modifico el servicio /problem/list para
que realice paginación y ordenación, ambas opcionales para que no afecte
la funcionalidad anterior.

De momento solo esta disponible en 'problemas' y no en 'mis problemas'
ya que ahí las cosas son un poco diferentes y supongo que las listas ahí
aun no son tan grandes.
Aquí hay que regresar 0 si son iguales (igual con score):

    $cmp = 0;
    if ($a['ratio'] < $b['ratio']) $cmp = -1;
    else if ($a['ratio'] > $b['ratio']) $cmp = 1;
    if ($mode === 'asc') {
        return $cmp;
    } else {
        return -$cmp;
    }