Citation: 6B_155/2019 E. 5

Le recours doit être partiellement admis (cf. consid. 3.3 supra). Pour le reste, le recours doit être rejeté. Le recourant, qui n'obtient que partiellement gain de cause, supporte une partie des frais judiciaires (art. 66 al. 1 LTF). Il peut prétendre à des dépens réduits, à la charge du canton de Neuchâtel (art. 68 al. 1 LTF). Sa demande d'assistance judiciaire est sans objet dans la mesure où le recourant a droit à des dépens; elle doit être rejetée pour le reste, dès lors que le recours était dénué de chances de succès s'agissant des aspects sur lesquels le recourant a succombé (art. 64 al. 1 LTF). L'admission du recours découlant de l'existence d'un vice procédural, il peut être statué sans qu'il soit nécessaire de procéder à un échange d'écritures préalable. Par ces motifs, le Tribunal fédéral prononce :