Faits :
A.
Le 1er septembre 2013, vers 3h00, X._ circulait sur la route des Monts-de-Lavaux à la Croix-sur-Lutry. Il n'a pas obtempéré aux injonctions d'arrêt d'un agent de police dans le cadre d'un contrôle de circulation et a pris la fuite. Un signalement du véhicule a été diffusé sur les ondes. Peu après, une patrouille de police a repéré la voiture du prénommé à la hauteur de la route du Simplon à Paudex. Malgré des ordres clairs d'arrêt des policiers, ce dernier a poursuivi sa route. Peu après, il a failli percuter une deuxième voiture de police qui barrait l'avenue de Lavaux afin de l'arrêter. Une course-poursuite a alors été entamée. Tout au long du trajet urbain, X._ n'a pas respecté de nombreux panneaux "stop" et "cédez-le passage", a franchi plusieurs giratoires à contresens et a circulé à une allure nettement supérieure aux 50 km/h prescrits, la police constatant notamment des pointes à 100 km/h.
La même nuit, vers 3h55, la voiture conduite par X._ a été repérée sur l'avenue de Beaulieu à Lausanne. Constatant qu'il était pris en chasse sur le pont de Chauderon, le prénommé a franchi sans s'arrêter le feu rouge et s'est engagé sur l'avenue Jules Gonin. Il a ensuite accéléré jusqu'à une vitesse de 180 km/h et, franchissant encore deux feux rouges et effectuant des dépassements téméraires, forçant d'autres usagers de la route à effectuer des manoeuvres d'évitement d'urgence, il a débouché sans ralentir sur la place Saint-François. X._ a poursuivi sa course sur l'avenue Benjamin Constant où il s'est retrouvé nez à nez avec une voiture de police qui s'était mise en travers de la chaussée de manière à lui bloquer le passage. Une tentative d'évitement et un début de freinage in extremis ne l'ont pas empêché de percuter violemment le véhicule. X._ a alors pris la fuite à pied sans se soucier du sort des occupants du véhicule de police. Il a été rattrapé sur la terrasse du Café du Théâtre et s'est encore débattu, tentant de prendre la fuite.
B.
Par jugement du 12 février 2015, le Tribunal correctionnel de l'arrondissement de Lausanne a reconnu X._ coupable notamment de mise en danger de la vie d'autrui (129 CP), de conduite d'un véhicule sans permis de conduire et de violation grave qualifiée des règles de la circulation routière (art. 90 al. 3 LCR). Il l'a condamné à une peine privative de liberté de trente-cinq mois, sous déduction de 90 jours de détention avant jugement, avec sursis partiel, la peine à exécuter étant de onze mois, le solde de vingt-quatre mois étant assorti d'un sursis de cinq ans, ainsi qu'à une amende de 1'000 francs. Le tribunal a également ordonné que 8 jours de détention soient déduits de la peine fixée, à titre de réparation du tort moral pour détention dans des conditions illicites.
Statuant le 11 juin 2015, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel de X._ et confirmé le jugement précité.
C.
Agissant par la voie du recours en matière pénale au Tribunal fédéral, X._ conclut à son acquittement du chef d'accusation de mise en danger de la vie d'autrui et à une réduction de sa peine à dire de justice. Il demande également à ce que le chiffre III du dispositif du jugement de première instance soit annulé (déduction de 8 jours de détention de la peine prononcée, à titre de tort moral) et que l'Etat de Vaud soit condamné à lui verser une indemnité de 1'600 francs. Subsidiairement, il conclut à l'annulation du jugement du 11 juin 2015 et au renvoi de la cause à l'autorité cantonale pour nouvelle décision dans le sens des considérants. Le recourant requiert également l'assistance judiciaire.
Considérant en droit :
1.
Le recourant se plaint d'une violation du droit fédéral. Il fait grief à la cour cantonale d'avoir retenu un concours entre les art. 129 CP et 90 al. 3 de la loi fédérale du 19 décembre 1958 sur la circulation routière (LCR; RS 741.01). A son avis, le comportement qui lui est reproché est totalement englobé par cette dernière disposition; partant, il doit être libéré du chef d'accusation de mise en danger de la vie d'autrui.
2.
2.1. L'art. 129 CP punit d'une peine privative de liberté de cinq ans au plus ou d'une peine pécuniaire celui qui, sans scrupules, aura mis autrui en danger de mort imminent. Cette infraction suppose la réunion de trois éléments, à savoir la mise d'autrui dans un danger de mort imminent, la conscience de ce fait et l'absence de scrupules.
Le danger au sens de l'art. 129 CP suppose un risque concret de lésion, c'est-à-dire un état de fait dans lequel existe, d'après le cours ordinaire des choses, la probabilité ou un certain degré de possibilité que le bien juridique soit lésé, sans toutefois qu'un degré de probabilité supérieur à 50 % soit exigé (ATF 121 IV 67 consid. 2b p. 70). Il doit en outre s'agir d'un danger de mort, et non pas seulement d'un danger pour la santé ou l'intégrité corporelle (ATF 133 IV 1 consid. 5.1 p. 8). Enfin, il faut que le danger soit imminent. La notion d'imminence n'est toutefois pas aisée à définir. Elle implique en tout cas, outre la probabilité sérieuse de la réalisation du danger concret, un élément d'immédiateté qui se caractérise moins par l'enchaînement chronologique des circonstances que par le lien de connexité direct unissant le danger et le comportement de l'auteur. L'immédiateté disparaît ou s'atténue lorsque s'interposent ou surviennent des actes ou d'autres éléments extérieurs (ATF 106 IV 12 consid. 2a p. 14; arrêt 6B_88/2014 du 10 novembre 2014 consid. 3.1).
Du point de vue subjectif, il faut que l'auteur ait agi intentionnellement et que l'acte ait été commis sans scrupules (sur cette condition, voir ATF 114 IV 103 consid. 2a p. 108). L'auteur doit avoir conscience du danger de mort imminent pour autrui et adopter volontairement un comportement qui le crée (ATF 121 IV 67 consid. 2d p. 75 in fine). En revanche, il ne veut pas, même à titre éventuel, la réalisation du risque, sans quoi il s'agirait d'une tentative d'homicide (ATF 107 IV 163 consid. 3 p. 165). Le dol éventuel ne suffit pas (arrêt 6B_307/2013 du 13 juin 2013 consid. 4.1).
2.2. Aux termes de l'art. 90 al. 3 LCR, celui qui, par une violation intentionnelle des règles fondamentales de la circulation, accepte de courir un grand risque d'accident pouvant entraîner de graves blessures ou la mort, que ce soit en commettant des excès de vitesse particulièrement importants, en effectuant des dépassements téméraires ou en participant à des courses de vitesse illicites avec des véhicules automobiles, est puni d'une peine privative de liberté d'un à quatre ans. Cette disposition est toujours applicable lorsque la vitesse maximale autorisée a été dépassée d'au moins 40 km/h là où la limite était fixée à 30 km/h, d'au moins 50 km/h là où la limite était fixée à 50 km/h, d'au moins 60 km/h là où la limite était fixée à 80 km/h et d'au moins 80 km/h là où la limite était fixée à plus de 80 km/h (art. 90 al. 4 LCR).
2.3. La question du concours entre le délit de chauffard de l'art. 90 al. 3 LCR et la mise en danger de l'art. 129 CP ne s'est pas encore posée devant le Tribunal fédéral. Certains auteurs considèrent que l'art. 90 al. 3 LCR peut être vu comme le pendant de l'art. 129 CP et prime donc cette dernière disposition dans le domaine de la circulation routière (DÉLÈZE/DUTOIT, Le "délit de chauffard" au sens de l'art. 90 al. 3 LCR: éléments constitutifs et proposition d'interprétation, in PJA 2013 p. 1202 ss, p. 1214; ANDRÉ BUSSY ET AL., Code suisse de la circulation routière commenté, 2015, ch. 6.3 let. b ad. art. 90 LCR; YVAN JEANNERET, Via sicura: le nouvel arsenal pénal, in Circulation routière 2/2013 p. 31 ss, p. 40). Une autre partie de la doctrine est d'avis que l'art. 129 CP absorbe l'art. 90 al. 3 LCR mais qu'un concours réel demeure possible lorsque la mise en danger concerne encore d'autres usagers de la route (PHILIPPE WEISSENBERGER, Kommentar Strassenverkehrgesetz und Ordnungsbussengesetz, 2ème édition, 2015, n° 181 ad art. 90 LCR; GEHRARD FIOLKA, in Balser Kommentar SVG, 2014, n° 192 ad art. 90 LCR). Cette question n'a pas besoin d'être tranchée en l'espèce.
2.4. La cour cantonale a relevé que, par son comportement, le recourant avait manifestement mis en danger les autres usagers de la route en roulant à des vitesses nettement supérieures à la limite autorisée, que ce soit en ville de Lausanne ou sur la route de Berne. Il n'apparaissait toutefois pas nécessaire de trancher la question d'un possible concours idéal entre les art. 129 CP et 90 al. 3 LCR. Le danger de mort provoqué par le prévenu à l'encontre des agents de police qui tentaient de l'intercepter n'entrait pas dans les prévisions de l'art. 90 al. 3 LCR; le danger de mort créé par la volonté de se soustraire à un contrôle de police excédait le cadre légal ainsi posé. En effet, au moment où il avait mis en danger la vie de ces agents de police en percutant violemment le véhicule qui cherchait à l'intercepter, le recourant n'avait pas agi comme chauffard, mais comme fugitif, prêt à prendre tous les risques pour éviter d'être appréhendé. Il s'agissait d'un comportement illicite qui tombait sous le coup de l'art. 129 CP et entrait en concours réel avec les mises en danger des autres usagers de la route dont le recourant s'était rendu coupable durant la course-poursuite qui avait précédé son interpellation.
Le recourant conteste cette appréciation. Il peine à comprendre la distinction effectuée par la cour cantonale entre "chauffard" et "fugitif". Il fait valoir que, dès le début de l'épisode, il s'agissait d'une course-poursuite avec la police : il voulait éviter un contrôle de police et a donc pris la fuite. Sa volonté a donc été la même tout au long des événements et, lorsqu'il a percuté le véhicule de police, il agissait toujours comme un "chauffard" qui roulait à une vitesse largement excessive pour éviter d'être rattrapé. A suivre le raisonnement des juges cantonaux, il faudrait plutôt le considérer comme un "fugitif" dès le premier contrôle; l'art. 90 al. 3 LCR ne serait ainsi pas applicable et seul l'art. 129 CP devrait être retenu, ce qui n'était manifestement pas la volonté du législateur. Le recourant estime qu'il doit par conséquent être libéré de l'infraction de mise en danger de la vie d'autrui.
Il n'est pas contesté qu'au cours de la course-poursuite, le recourant s'est rendu coupable de violation grave qualifiée des règles de la circulation routière. Les excès de vitesse qui lui sont reprochés, ainsi que les autres infractions au code de la route, commis en partie en zone urbaine, étaient propres à provoquer un accident mortel et ont ainsi mis concrètement en danger la vie des autres usagers de la route. Ces actes sont ainsi couverts par l'art. 90 al. 3 LCR. En revanche, l'épisode où le recourant a percuté violemment le véhicule de la police et s'est enfui sans se soucier du sort des passagers constitue une infraction distincte, basée sur un état de fait différent. A ce stade, seuls les agents étaient la cible du recourant; par la collision et la fuite qui s'en est suivie, le recourant a mis en danger de mort imminent les policiers qui cherchaient à l'intercepter, et non plus les autres usagers de la route. L'on se trouve ainsi en présence d'un concours réel d'infractions: le délit de chauffard, qui couvre manifestement les actes commis durant la course-poursuite, n'englobe pas la mise en danger des agents de police qui résulte de la collision et de la fuite. Comme l'a relevé à juste titre la cour cantonale, les exemples donnés à l'art. 90 al. 3 LCR (excès de vitesse particulièrement importants, dépassements téméraires ou courses de vitesse illicites) démontrent en effet que le législateur a voulu sanctionner des actes de conduite gravement dangereux; or, le danger de mort provoqué par le recourant à l'encontre des agents n'entre pas dans les prévisions de cette disposition. Mal fondé, ce premier grief doit être rejeté.
3.
Le recourant demande une réduction de sa peine à dire de justice. Il n'y a pas lieu d'examiner cette conclusion, qui se fonde uniquement sur l'éventualité d'un acquittement pour l'infraction de mise en danger de la vie d'autrui (art. 129 CP). Le recourant ne se plaint au demeurant pas que la quotité de la peine, fixée pour l'ensemble des infractions qui lui sont reprochées, contreviendrait aux dispositions légales.
4.
Invoquant les art. 58 CPC, 431 al. 1 CPP et 5 CEDH, le recourant reproche aux autorités précédentes d'avoir réparé la détention illicite qu'il avait subie en procédant à une réduction de peine, alors qu'il avait conclu à une indemnisation financière. A son avis, les juges ne pouvaient pas s'écarter de ses conclusions.
4.1. Aux termes de l'art. 431 al. 1 CPP, si le prévenu a, de manière illicite, fait l'objet de mesures de contrainte, l'autorité pénale lui alloue une juste indemnité et réparation du tort moral.
Selon la jurisprudence, lorsqu'une irrégularité constitutive d'une violation d'une garantie conventionnelle ou constitutionnelle a entaché la procédure relative à la détention provisoire, celle-ci peut être réparée par une décision de constatation (ATF 140 I 246 consid. 2.5.1 p. 250). Une telle décision vaut notamment lorsque les conditions de détention provisoire illicites sont invoquées devant le juge de la détention. A un tel stade de la procédure, seul un constat peut donc en principe intervenir et celui-ci n'a pas pour conséquence la remise en liberté du prévenu (ATF 139 IV 41 consid. 3.4 p. 45). Il appartient ensuite à l'autorité de jugement d'examiner les possibles conséquences des violations constatées, par exemple par le biais d'une indemnisation fondée sur l'art. 431 CPP ou, cas échéant, par une réduction de la peine (ATF 141 IV 349 consid. 2.1 p. 352 et les arrêts cités; ATF 140 I 125 consid. 2.1 p. 128).
S'agissant du mode et de l'étendue de l'indemnisation fondée sur les art. 429 ss CPP, il n'est pas exclu de s'inspirer des règles générales des art. 41 ss CO (cf. ATF 140 I 246 consid. 2.6 p. 251). Ces dispositions accordent au juge un large pouvoir d'appréciation, que le Tribunal fédéral ne revoit qu'avec retenue (cf. ATF 137 III 303 consid. 2.2.2 p. 309 s.; arrêt 6B_111/2012 du 15 mai 2012 consid. 4.2; arrêt 6B_437/2014 du 29 décembre 2014 consid. 3). En vertu de l'art. 43 CO, une réparation en nature n'est pas exclue (HEIERLI/ SCHNYDER, in Basler Kommentar OR, 2011, n° 4 ad art. 43 CO). Une réparation en nature est déjà pratiquée par la jurisprudence en cas de violation du principe de la célérité. Le Tribunal fédéral considère alors, comme les retards de procédure ne peuvent être guéris, qu'il y a lieu de tenir compte de la violation du principe de la célérité sur le plan de la peine en réduisant celle-ci (ATF 133 IV 158 consid. 8 p. 170).
4.2. L'art. 5 par. 5 CEDH prévoit que toute personne victime d'une détention dans des conditions contraires aux dispositions de cet article a droit à réparation. Cette disposition n'octroie pas au recourant de garanties plus étendues que celles découlant de l'art. 431 CPP et ne lui accorde en particulier pas le droit de choisir le mode de dédommagement. La cour cantonale n'a par conséquent pas commis un déni de justice en n'examinant pas la question de l'indemnisation sous cet angle.
Par ailleurs, contrairement à ce que soutient le recourant, l'art. 58 CPC ne s'applique pas aux affaires pénales (cf. art. 1 CPC); il ne peut dès lors rien tirer de cette disposition.
4.3. En l'espèce, la cour cantonale a relevé que le recourant devait purger la part ferme de sa peine. La réduction de la peine était donc à même de l'indemniser et c'était en vain qu'il demandait une réparation financière, alors que la restitution de sa liberté constituait le meilleur moyen de réparer le tort en l'espèce. Les conditions de détention ayant été illicites pendant 16 jours, la réduction de 8 jours sur la peine prononcée correspondait à la jurisprudence cantonale et devait être confirmée.
Le recourant n'allègue pas que la réduction de peine accordée en réparation de la détention illicite serait insuffisante, ce qui n'apparaît pas être le cas. Il se plaint en revanche que les juges cantonaux n'ont pas donné suite à ses conclusions, qui tendaient à l'allocation d'une indemnité de 1'600 francs. Or, contrairement à ce qu'affirme le recourant, le choix du type d'indemnisation ne lui appartient pas, le mode et l'étendue de la réparation étant laissés à l'appréciation du juge. En l'occurrence, les juges cantonaux n'ont pas excédé leur pouvoir d'appréciation en considérant que la restitution de la liberté constituait le meilleur moyen de réparer le tort subi par le recourant et en décidant ainsi de diminuer la durée de la peine, ce qui correspond à une indemnisation en nature. Ce faisant, ils se sont visiblement inspirés de la solution adoptée par le législateur à l'art. 431 al. 2 CPP en cas de durée excessive de la détention provisoire, qui prévoit en premier lieu l'imputation de la détention sur les sanctions prononcées. Le mode de réparation choisi par la cour cantonale échappe par conséquent à la critique.
Enfin, le recourant invoque en vain son droit d'être entendu en relation avec la motivation du jugement attaqué sur cette question. Les considérants du jugement permettent en effet amplement de comprendre les raisons qui ont amené la cour cantonale à choisir ce mode de réparation et le recourant a pu attaquer ce point devant le Tribunal fédéral en toute connaissance de cause.
5.
Au vu de ce qui précède, le recours doit être rejeté. Dès lors que le recourant est dans le besoin et que ses conclusions ne paraissaient pas d'emblée vouées à l'échec, sa requête d'assistance judiciaire doit être admise (art. 64 al. 1 LTF). Par conséquent, il y a lieu de le dispenser des frais et d'allouer une indemnité à son mandataire, désigné comme avocat d'office (art. 64 al. 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La requête d'assistance judiciaire est admise. Me Fabien Mingard est désigné comme avocat d'office et une indemnité de 3'000 fr. lui est allouée à titre d'honoraires, à payer par la caisse du Tribunal fédéral.
3.
Il n'est pas perçu de frais judiciaires.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 2 mai 2016
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Mabillard