Implementing julia-in-string and julia-in-char.
Refactoring julia-char-regex as an rx form.

This regexp has been simplified from the original. The equivalent rx
form of the original is:

(defconst julia-char-regex
  (rx (submatch (or (any "-" ";" "\\" "^" "!" "|" "?" "*" "\\" "<" "%" "," "=" ">" "+" "/" "&" "$" "\\" "~" "\\" ":")
                    (syntax open-parenthesis)
                    (syntax whitespace)
                    bol))
      (submatch "'"
                (submatch (or (submatch (*\? (not (any "'"))) (not (any "\\" "\\")))
                              (submatch "\\\\")))
                "'")))

However, the inner groups are unnecessary and there are repeated "\\"
occurrences.
Fix julia-in-brackets so it isn't confused by strings, characters or comments.
Don't call parse-partial-sexp to find the last opening paren.

This doesn't work because Julia's character syntax cannot simply be
expressed with an Emacs syntax table. However, parse-partial-sexp
is depending on the syntax table to avoid strings and characters.

Instead, just move backwards until we find a paren that isn't in a
string, character or comment.

Fixes https://github.com/JuliaLang/julia/issues/8924
Optimising julia-at-keyword.

It's an expensive function and we call it quite often. Ensure
we do the cheap checks first, and avoid calling julia-in-brackets
only if necessary.
Make julia-last-open-block-pos a pure function that only returns the position.
Fix indentation when we're indenting a line that has an open paren after point.
Comment improvements.
Make julia-char-regex stricter.

This gives us more accurate highlighting, and makes julia-in-char more
accurate. Previously, it could be confused by:

                edit_insert(s, ';|')
            end
        end,
        '?' => function (s,o...)

because ; is legal before a character, and we weren't enforcing a
maximum length of character literals.
Don't error if the first line of the file is empty.

We can't go back before (point-min), and Emacs errors if we try.
If the previous line has a trailing =, that should take precedence over blocks.
Merge pull request #8955 from Wilfred/indent_with_brackets

julia-mode.el: Smarter indentation