Issue title: Weird parsing of empty blocks of code (with triple backticks)
 Issue body: Originally reported in https://github.com/sourcejs/Source/issues/155#issuecomment-117956180:

Marked's parsing of named code blocks is weird.

``````
> var m = require('marked')
> m('```js\n```')
'<p><code>js</code></p>\n'
> m('```js\n\n```')
'<pre><code class="lang-js">\n\n</code></pre>\n'
``````

Why isn't the first example recognized as an empty block of `lang-js`?

 Comments: 
 Comment 0: And one more example, now with custom renderer:

``````
> var renderer = new m.Renderer();
undefined
> renderer.code = function(code, lang) { console.log(JSON.stringify(code), lang, 'block!'); }
[Function]
> renderer.codespan = function(code) { console.log(JSON.stringify(code), 'span!'); }
[Function]
> m('```js\n```', {renderer: renderer})
"js" span!
'<p>undefined</p>\n'
> m('```js\n\n```', {renderer: renderer})
"\n" js block!
'undefined'
``````

Looks like in this first markdown example, the code is parsed as codespan.

{'source': 'GithubIssues', 'repo_name_with_owner': 'markedjs/marked', 'issue_id': 92807934, 'repo_stars': 28551.0}