In a heavy medium saucepan, whisk together the sugar, cocoa, cornstarch, and salt. Whisk in about half of the milk to make a smooth paste and stir in the rest. Place the saucepan over medium heat and cook, stirring constantly, until the mixture comes to a boil and begins to thicken, about 6 minutes. Continue to cook, stirring, for 1 minute longer, until smooth and very thick. Remove the saucepan from the heat and add the chocolate, butter and vanilla, stirring until they are both melted. Pour the pudding into 4 dessert bowls or one larger serving dish. Place a sheet of plastic wrap directly on the surface of the pudding to prevent a skin from forming on top and refrigerate until firm. (This will take about 30 minutes for individual dishes, longer for the large bowl.) Serve plain or topped with the optional whipped cream.