Calculate based on width instead of length of strings

Width of title, summary and/or modification time depends on the
characters used in them.  The GNU Emacs Lisp Reference Manual suggests
using the function `string-width` and friends when calculating the
string width for display.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Width.html
Fix string-width error with empty file

Unlike length, string-width does not return 0 when nil is given.
Create a wrapper function deft-string-width to handle nil argument.

This happens when deft tries to list a file without title or summary,
ie empty file.  A backtrace is like this:

  Debugger entered--Lisp error: (wrong-type-argument stringp nil)
    string-width(nil)
    (min line-width (string-width title))
Allow directories under deft-directory

- Searches deft-directory recursively
- File names are shown with any path relative to deft-directory