Customize the vertical cell separator separately from the right one

WARNING: this breaks compatibility if you rely on setting
options.chars.right to set the vertical cell separator too.

Given the following table:
 ┌────────┬────────┬────────┐
 │ foo    │ bar    │ baz    │
 └────────┴────────┴────────┘

it's now possible to double the outer border only:
 ╔════════╤════════╤════════╗
 ║ foo    │ bar    │ baz    ║
 ╚════════╧════════╧════════╝

just set the appropriate chars, using the new 'middle' property:
 var table = new Table({
   , style: {
       chars: {
         'top': '═'
       , 'top-mid': '╤'
       , 'top-left': '╔'
       , 'top-right': '╗'
       , 'bottom': '═'
       , 'bottom-mid': '╧'
       , 'bottom-left': '╚'
       , 'bottom-right': '╝'
       , 'left': '║'
       , 'left-mid': '╟'
       , 'mid': '─'
       , 'mid-mid': '┼'
       , 'right': '║'
       , 'right-mid': '╢'
       , 'middle': '│'
       }
     }
 });
Make line() return the generated string instead of appending it to ret

This makes reasoning about the newly created line easier, to eg. skip
empty lines.
Add a test for the the compact mode
Omit horizontal decoration lines if empty

This allows for more flexible compact layouts: even the compact mode can
be redefined in terms of 'chars' settings by using the empty string for all the
horizontal 'mid' characters.

By using the following configuration:
 var table = new Table({
   chars: {
       'mid': ''
     , 'left-mid': ''
     , 'mid-mid': ''
     , 'right-mid': ''
   },
   style: {
       head: []
     , border: []
   }
 });

it's now possible to get results like this (note the lack of the horizontal
line between rows):
 ┌────────────┬─────┬──────┐
 │ foo        │ bar │ baz  │
 │ frobnicate │ bar │ quuz │
 └────────────┴─────┴──────┘

By setting all chars to empty with the exception of 'middle' being set to a
single space and by setting padding to zero, it's possible to get the
most compact layout with no decorations:
 foo        bar baz
 frobnicate bar quuz
Merge pull request #24 from em-/no-decoration

Print compact tables with no decorations
Fixing global leak of width variable.
Removing var completely as return var width caused other problems.
Merge pull request #34 from charleshimmer/leaking-global

Fixing global leak of width variable.
Handle custom colored strings correctly

Currently strlen ignores any color code that makes use of ';', this
includes light colors as well as 256 color codes. This adjusts the regex
to detect these other color types.