Faits :
A.
Le 7 janvier 2015, à 18h20, X._ a publié sur sa page Facebook, accessible au public, le message suivant: " J'organise une kristallnacht. Qui est partant pour aller bruler du muzz? " (sic). Le même jour, à 21h21, il a ajouté le commentaire: " J'ai mon P226 qui doit bientôt arriver + le calibre 12 ".
B.
Par jugement du 7 mars 2016, le Tribunal de police de l'arrondissement de la Broye et du Nord vaudois a constaté que X._ s'était rendu coupable de discrimination raciale (art. 261bis al. 1 CP), l'a condamné à une peine pécuniaire de 25 jours-amende, le jour-amende étant fixé à 30 fr., et à une amende de 150 fr., a suspendu l'exécution de la peine pécuniaire et fixé à X._ un délai d'épreuve de deux ans, a dit qu'à défaut de paiement de l'amende, la peine privative de liberté de substitution serait de cinq jours et a mis les frais de justice, par 1'225 fr., à la charge de X._.
C.
Saisie d'un appel de X._, la Cour d'appel pénale du Tribunal cantonal vaudois l'a rejeté par jugement du 27 mai 2016. Elle a considéré en substance que pour les destinataires moyens que sont les centaines de personnes susceptibles d'avoir lu le statut Facebook litigieux, tant le mot " muzz " que l'événement historique de la " kristallnacht " faisaient référence à la communauté religieuse musulmane dans son ensemble. Le fait de proposer d'aller « brûler du " muzz " » révélait clairement une incitation à la haine ou à la discrimination d'un groupe religieux, soit en l'espèce les musulmans. En ajoutant quelques heures plus tard que son " P226 " et son " calibre 12 " (fusil à pompe) allaient bientôt arriver, X._ n'avait fait que confirmer l'agressivité des propos et la violence des actes suggérés.
D.
Par arrêt 6B_986/2016 du 20 septembre 2017, le Tribunal fédéral a admis le recours de X._, considérant que la définition du vocable " muzz " ressortant du Wiktionnaire ne constituait pas un fait notoire et que, partant, le droit d'être entendu de X._ avait été violé. Il a renvoyé la cause à l'autorité cantonale pour nouvelle décision.
E.
Statuant sur renvoi, la Cour d'appel pénale a rejeté l'appel de X._ par jugement du 5 décembre 2017, après avoir administré la définition du Wiktionnaire comme un moyen de preuve ordinaire.
F.
X._ forme un recours en matière pénale au Tribunal fédéral contre ce jugement. Il conclut, avec suite de frais et dépens, à son acquittement du chef de discrimination raciale au sens de l'art. 261bis al. 1 CP, subsidiairement au renvoi de la cause à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud pour nouvelle décision dans le sens des considérants.
Considérant en droit :
1.
Le recourant soutient que la cour cantonale a violé le principe de l'autorité de l'arrêt de renvoi.
1.1. Conformément à l'art. 107 al. 2 1ère phrase LTF, si le Tribunal fédéral admet un recours, il statue lui-même sur le fond ou renvoie l'affaire à l'autorité précédente pour qu'elle prenne une nouvelle décision. Le principe de l'autorité de l'arrêt de renvoi découle du droit fédéral non écrit (ATF 143 IV 214 consid. 5.3.3 p. 222; 135 III 334 consid. 2.1 p. 335). Conformément à ce principe, l'autorité cantonale à laquelle la cause est renvoyée par le Tribunal fédéral est tenue de fonder sa nouvelle décision sur les considérants de droit de l'arrêt du Tribunal fédéral. Elle est ainsi liée par ce qui a déjà été définitivement tranché par le Tribunal fédéral et par les constatations de fait qui n'ont pas été attaquées devant lui ou l'ont été sans succès (ATF 143 IV 214 consid. 5.2.1 p. 220; 131 III 91 consid. 5.2 p. 94). La motivation de l'arrêt de renvoi détermine dans quelle mesure la cour cantonale est liée à la première décision, décision de renvoi qui fixe aussi bien le cadre du nouvel état de fait que celui de la nouvelle motivation juridique (ATF 135 III 334 consid. 2 p. 335).
1.2. Dans l'arrêt 6B_986/2016 du 20 septembre 2017 (consid. 2.1), le Tribunal fédéral a constaté que la définition du mot " muzz " issue du Wiktionnaire ne pouvait pas revêtir, uniquement sur la base de cette source, la qualité de fait notoire. Faute d'avoir donné communication de ses recherches aux parties en leur offrant la possibilité de s'exprimer à leur propos, la cour cantonale avait violé le droit d'être entendu du recourant. La cause était dès lors renvoyée à l'autorité précédente pour qu'elle rende une nouvelle décision. Celle-ci était enjointe à administrer ce moyen de preuve et, " cas échéant, tout autre moyen de preuve qu'elle jugera [it] utile, en respectant le droit d'être entendu, puis déterminer comment les destinataires moyens du statut Facebook du recourant devaient comprendre le sens du message incriminé ".
1.3. Le recourant fait grief à la cour cantonale de ne pas avoir administré de preuve nouvelle. Or, selon les termes de l'arrêt 6B_986/2017 précité, le Tribunal fédéral n'a pas ordonné à la cour cantonale de compléter ses moyens de preuve, mais uniquement de respecter les principes d'administration des preuves, en particulier le droit d'être entendu des parties. Partant, la cour cantonale n'a pas méconnu la portée de l'arrêt du Tribunal fédéral en donnant l'opportunité aux parties de se déterminer sur le moyen de preuve tiré du Wiktionnaire, sans pour autant administrer de preuves supplémentaires. La question de savoir si l'état de fait retenu pouvait être déduit de manière soutenable des preuves administrées par l'autorité précédente sera examinée ci-après (consid. 2 infra).
Infondé, le grief est rejeté.
2. Le recourant se plaint d'arbitraire dans l'établissement des faits et de la violation du principe de la présomption d'innocence.
2.1. Le Tribunal fédéral n'est pas une autorité d'appel devant laquelle les faits établis en dernière instance cantonale peuvent être librement rediscutés. Il est lié par les constatations de faits de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies de façon manifestement inexacte ou en violation du droit au sens de l'art. 95 LTF (art. 97 al. 1 et 105 al. 2 LTF), soit, pour l'essentiel, de manière arbitraire (art. 9 Cst.; voir sur cette notion: ATF 141 IV 369 consid. 6.3 p. 375; 141 I 49 consid. 3.4 p. 53; 140 III 264 consid. 2.3 p. 266). Le Tribunal fédéral n'entre en matière sur de tels moyens, fondés sur la violation de droits fondamentaux, que s'ils ont été invoqués et motivés de manière précise (art. 106 al. 2 LTF; ATF 142 III 364 consid. 2.4 p. 368). Les critiques de nature appellatoire sont irrecevables (ATF 142 III 364 consid. 2.4 p. 368; 141 IV 249 consid. 1.3.1 p. 253).
La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe " in dubio pro reo ", concernent tant le fardeau de la preuve que l'appréciation des preuves (ATF 127 I 38 consid. 2a p. 40 s.). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe " in dubio pro reo ", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 138 V 74 consid. 7 p. 82). En tant que règle sur le fardeau de la preuve, la présomption d'innocence signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter à l'accusé. C'est ainsi à l'accusation d'établir la culpabilité du prévenu, et non à celui-ci de démontrer qu'il n'est pas coupable. La présomption d'innocence est violée lorsque le juge rend un verdict de culpabilité au seul motif que le prévenu n'a pas prouvé son innocence. Le juge ne peut retenir un fait défavorable à l'accusé que s'il est convaincu de la matérialité de ce fait, de sorte que le doute profite à l'accusé (ATF 127 I 38 consid. 2a p. 40 s.; 120 Ia 31 consid. 2c p. 37). En revanche, la présomption d'innocence n'est pas violée si le juge retient des faits sur la matérialité desquels il n'éprouve aucun doute (cf. arrêts 6B_695/2012 du 9 avril 2013 consid. 2.2.1; 6B_148/2011 du 17 mai 2011 consid. 1.1; 6B_748/2009 du 2 novembre 2009 consid. 2.1).
2.2. La cour cantonale a écarté l'argumentation du recourant qui soutenait qu'en utilisant le terme " muzz ", il ne visait pas les musulmans dans leur ensemble, mais seulement les auteurs fanatiques d'actes terroristes violents. Elle a rappelé que selon l'arrêt 6B_986/2016, le Wiktionnaire, bien qu'il ne présentât pas de garantie de fiabilité particulière, pouvait être utilisé comme moyen de preuve ordinaire. Elle a considéré que même si le Wiktionnaire n'était pas une source officielle, il était incontestable que le mot " muzz " était une apocope, soit la " chute d'un ou plusieurs phonèmes à la fin d'un mot à la suite d'une évolution phonétique ". Ainsi, à l'instar de " ciné " pour " cinématographe ", ou encore de " métro " pour " métropolitain ", le mot " muzz " retranchait la fin d'un autre mot, à savoir le mot " musulman ".
2.3. Le recourant fait valoir que l'apocope peut ne pas renvoyer uniquement à un seul mot, mais à plusieurs mots différents avec des significations distinctes. La cour cantonale faisait ainsi dire au Wiktionnaire plus et autre chose que ce qu'il disait et ignorait quantité d'autres exemples où les apocopes pouvaient être polysémiques ou comporter des significations différentes. Ainsi, l'apocope " perf " peut se référer à " performance " ou " perfusion "; " perm " peut se référer à " permanence ou " permission; " sup " peut se référer à " supérieur " ou " supplémentaire ".
Même si une apocope peut renvoyer à plusieurs mots différents avec des significations distinctes, on ne voit pas, dans le contexte du cas d'espèce, à quel autre mot que " musulman " l'abréviation " muzz " pourrait renvoyer. A cet égard, la cour cantonale observe de manière pertinente que si le vocable " muzz " n'abrégeait pas le mot " musulman ", le recourant n'aurait pas à expliquer que " muzz " ne désigne qu'une " certaine partie " des musulmans, selon son expression. Les propos incriminés n'auraient simplement aucun lien avec la communauté musulmane, que ce soit en tout, ou seulement en partie comme il le soutient. En outre, le Wiktionnaire ne se limite pas à affirmer que le terme " muzz " est une apocope, en laissant ouvert le champ des possibles quant à savoir quel mot ce terme abrège; il précise qu'il s'agit d'une " apocope de musulman, la consonne finale étant inspirée de la prononciation plutôt que de la graphie originelle " (Wiktionnaire, dictionnaire sur internet, https://fr.wiktionary.org/, " définition du mot " muzz " ", ajouté le 23 décembre 2013; arrêt 6B_986/2016 du 20 septembre 2017 consid. 1.3). Cette définition constitue un élément de preuve pertinent dans la détermination du contenu du message du recourant.
Il résulte de ce qui précède que l'argumentation du recourant est impropre à démontrer l'arbitraire de l'appréciation de l'autorité précédente.
2.4. Le recourant reproche à la cour cantonale d'avoir écarté le témoignage de A._ qui confirmait que le mot " muzz " se rapportait uniquement aux islamistes terroristes. La cour cantonale avait douté de la crédibilité du témoignage en supposant, sans aucunement le démontrer, que A._ voulait s'éviter des ennuis en raison de ses propos.
2.4.1. La cour cantonale a constaté que A._ avait déclaré lors des débats devant le premier juge que le terme " muzz " désignait " un fanatique terroriste poseur de bombe ", que son utilisation " n'englob[ait] pas tous les musulmans ", enfin qu'il s'agissait d'un terme " qu'on a eu utilisé dans le cadre du service militaire ". L'autorité précédente a retenu que ces déclarations n'étaient pas convaincantes. A._ donnait une définition du mot " muzz " qui l'arrangeait dans la mesure où il avait également réagi de manière virulente au statut litigieux sur le compte Facebook du recourant.
2.4.2. On comprend suffisamment du jugement attaqué que le témoin avait réagi au message litigieux en y manifestant, à tout le moins, une certaine forme d'adhésion. Il n'était pas arbitraire d'en déduire que le témoin avait un intérêt propre à déclarer que le vocable " muzz " ne visait pas une catégorie de personnes protégées par l'art. 261bis CP, de sorte qu'on ne pouvait accorder une force probante accrue à son témoignage.
Pour le surplus, la cour cantonale a relevé que les pratiques de langage qui auraient eu cours dans l'armée et auxquelles le témoin se référait n'étaient de toute façon pas déterminantes. En effet, il s'agissait d'établir comment les destinataires moyens et objectifs du message du recourant pouvaient et devaient le comprendre (cf. consid. 3 ci-dessous), lesquels ne se limitaient pas aux compagnons d'armes du recourant. Celui-ci n'oppose aucune critique motivée à l'encontre de cette appréciation.
2.5. Il s'ensuit que le recourant ne démontre pas que la cour cantonale aurait apprécié les preuves de manière insoutenable en retenant que le terme " muzz " était une apocope du mot " musulman ". L'autorité précédente n'a pas non plus violé la présomption d'innocence en se déclarant, à l'issue de son appréciation des moyens de preuve disponibles, convaincue de cette conclusion. Les griefs soulevés par le recourant sont infondés.
3.
Le recourant soutient que la publication litigieuse ne tombe pas sous le coup de la discrimination raciale selon l'art. 261bis al. 1 CP, faute de viser la communauté musulmane dans son ensemble.
3.1. Aux termes de l'art. 261bis al. 1 CP, se rend coupable de discrimination raciale celui qui, publiquement, aura incité à la haine ou à la discrimination envers une personne ou un groupe de personnes en raison de leur appartenance raciale, ethnique ou religieuse.
L'art. 261bis CP, qui est classé parmi les infractions contre la paix publique, protège essentiellement la dignité de l'homme en tant que membre d'une race, d'une ethnie ou d'une religion. Dans ce contexte, conformément à la volonté du législateur, l'art. 261bis al. 1 CP vise à combattre la haine raciale (cf. ATF 128 I 218 consid. 1.4 p. 222 s.; 126 IV 20 consid. 1c p. 24).
Selon la jurisprudence du Tribunal fédéral, pour apprécier si une expression relève du droit pénal, il faut se fonder sur le sens qu'un tiers moyen non averti doit, dans les circonstances d'espèce, lui attribuer. Une expression faite publiquement relève de l'art. 261bis al. 4 première partie CP lorsqu'elle serait comprise par un tiers moyen non averti dans les circonstances d'espèce comme relevant de la discrimination raciale et que le prévenu s'est accommodé du fait que son expression pouvait être interprétée dans ce sens (ATF 133 IV 308 c. 8.5.1). Les circonstances tenant à la personne du prévenu et celles tenant à la personne visée appartiennent aussi aux critères essentiels d'interprétation de l'expression, tout comme les circonstances de l'acte en tant que tel (ATF 140 IV 67 consid. 2.1.1-2.1.2 et la jurisprudence citée; arrêt 6B_734/2016 du 18 juillet 2017 consid. 2.2 in SJ 2018 I 25).
Déterminer le contenu d'un message relève des constatations de fait. Le sens qu'un destinataire non prévenu confère aux expressions utilisées constitue en revanche une question de droit (ATF 143 IV 193 consid. 1 p. 198).
3.2. La cour cantonale a observé qu'il ressortait de l'arrêt du Tribunal fédéral que la seule référence à l'événement historique de la " Kristallnacht " dans le message du recourant, sans que le sens du mot " muzz " ne soit défini, ne suffisait pas pour conclure qu'un tiers non prévenu comprendrait le statut Facebook du recourant comme visant un groupe de personnes protégé par l'art. 261bis al. 1 CP. Le terme " muzz " étant désormais défini - dans le respect du droit d'être entendu -, comme désignant la communauté musulmane dans son ensemble, sans distinction d'une quelconque appartenance à une association terroriste, on pouvait examiner l'usage conjoint par le recourant de la référence à la " Kristallnacht ". Cette référence à un événement historique lors duquel, sur tout le territoire du Reich, la nuit des 9 et 10 novembre 1938, plusieurs milliers de juifs avaient été massacrés ou déportés uniquement sur le critère de leur religion (cf. arrêt 6B_627/2015 du 4 novembre 2015 consid. 2.2), donc sans distinction aucune liée à la violence des personnes massacrées, constituait un élément utile s'agissant de déterminer comment le message du recourant pouvait et devait être compris par ses destinataires.
En utilisant le terme " muzz " et en y ajoutant une référence à la " Kristallnacht ", le recourant, motivé par des sentiments haineux, avait contribué à tout le moins, dans le contexte particulier et délicat des attentats du 7 janvier 2015, à entretenir l'amalgame entre musulmans et islamistes terroristes. Ainsi, pour les destinataires moyens qu'étaient les centaines de personnes susceptibles d'avoir lu le statut Facebook litigieux, tant le mot " muzz " que l'événement historique dont le recourant se proposait d'organiser une nouvelle édition faisaient référence à la communauté religieuse musulmane dans son ensemble, sans distinction.
Par ailleurs, la cour cantonale a considéré que le fait que le statut Facebook litigieux ait été publié quelques heures après l'attentat qui avait visé la rédaction de Charlie Hebdo le matin du 7 janvier 2015 ne permettait pas d'écarter cette appréciation. La proposition d'aller " brûler du muzz " ne dénotait aucune ambiguïté mais révélait clairement une incitation à la haine ou à la discrimination d'un groupe religieux, soit en l'espèce les musulmans. En ajoutant quelques heures plus tard que son " P226 " et son " calibre 12 " allaient bientôt arriver, le recourant n'avait fait que confirmer l'agressivité des propos et la violence des actes suggérés. Du reste, on imaginait difficilement le recourant, muni de ses armes, proposer des battues pour débusquer les terroristes qui se trouvaient dans son village ou ses abords, lever une milice pour supprimer les auteurs des attentats de Paris, ni éradiquer les organisations considérées comme terroristes et se réclamant de l'islam dans les territoires que celles-ci contrôlaient, à l'étranger. Une telle interprétation n'était pas raisonnable et ne pouvait pas être celle d'un destinataire moyen.
3.3. Les considérations de la cour cantonale ne prêtent pas le flanc à la critique. Si la seule référence à la " Kristallnacht " dans la publication litigieuse ne permettait pas de définir le mot " muzz ", la cour cantonale pouvait en revanche en tenir compte pour déterminer comment les destinataires du message litigieux devaient le comprendre. La proposition du recourant d'organiser " une kristallnacht " renforce l'idée, au-delà de l'usage du vocable " muzz ", qu'il s'agit de s'en prendre à une communauté religieuse, comme lors de l'événement originel. Par ailleurs, ce n'est pas parce que le message a été publié dans le contexte des attentats de janvier 2015 qu'il pouvait et devait être compris comme visant uniquement les terroristes de confession musulmane. Au contraire, comme l'a retenu la cour cantonale, en proposant d'aller " bruler du muzz " (sic) quelques heures après l'attentat qui avait visé la rédaction de Charlie Hebdo, le recourant a contribué à entretenir l'amalgame entre musulmans et islamistes terroristes. C'est, partant, sans violer le droit fédéral que la cour cantonale a retenu que le message du recourant était propre à éveiller la haine envers un groupe de personnes en raison de leur appartenance religieuse, soit en l'espèce les musulmans, protégés par l'art. 261bis CP.
Le recourant n'invoque pas d'autres griefs sous l'angle de l'art. 261bis al. 1 CP. Il n'y a dès lors pas lieu d'annuler sa condamnation du chef de discrimination raciale.
4.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était voué à l'échec, l'assistance judiciaire ne peut être accordée (art. 64 al. 1 LTF). Le recourant devra donc supporter les frais judiciaires (art. 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3000 fr., sont mis à la charge du recourant.
3.
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 17 mai 2018
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Musy