builder: Fail if bison is not installed.

This partially fixes commit a4800e2d4fc50f372a8b626333c4fbb9b8ca9633.

(cherry picked from commit f526fe1766471b51b92cad74af0103d1889db83a)
builder: Fail if lex is not installed.

This completes the fix for commit a4800e2d4fc50f372a8b626333c4fbb9b8ca9633.

(cherry picked from commit b3a106cefc5dcb356ffb66ef53eba19452ebb60e)
builder: Allow upload to directory when target is a symlink to a directory.

(cherry picked from commit 7a8addb48553c90cf34cea5804d9d139e1c81b85)
builder: Allow /tmp or /Temp to be symlinks to a directory.

(cherry picked from commit 63ec023f19f2b397dfa629a8674bb9fbed752c71)
podwrapper: virt-install is not a libguestfs page.

This now redirect to http://man.he.net/man1/virt-install, but this is
unfortunately a 404.

Incomplete fix for RHBZ#1029134.

Thanks: Paul Maunders.
(cherry picked from commit edacd479faf7175eb2ddb10dd8c7ab4c90db5d0b)
builder: Clarify architecture section of the documentation.

I have checked and cross architecture builds work fine:

http://rwmj.wordpress.com/2013/11/09/virt-builder-running-on-arm/#content
(cherry picked from commit 544d6b25e345e2317b1f2e92684af6c08e1c58ba)
mllib: Add a utility function for safely reading from /dev/urandom.

OCaml's buffered 'in_channel' has a 64k buffer, so using it to read a
few bytes from /dev/urandom removes a lot of the system's entropy (for
example /proc/sys/kernel/random/entropy_avail goes from ~3000 to 128).

This patch was originally by Edwin Török for builder.ml.  I
generalized it because there are two other places where we did
over-sized reads from /dev/urandom.

(cherry picked from commit f013b15fa1daf623cbf39007182c44c734e9bc79)
Avoid modulo bias in random password generation

Char.code (input_char chan) mod nr_chars has modulo bias because
the original interval is not a multiple of the destination interval,
i.e. 256 mod nr_chars != 0.

One way to fix this is to keep generating random numbers until they fall outside
the interval where modulo bias occurs, that is accept only c=[256 % nr_chars, 256).
That interval maps back to [0, nr_chars), and has a length of
(256 - 256 % nr_chars), which is a multiple of nr_chars.

RWMJ:
 - Modify the code so it goes into a utility library.
 - Use the same code across virt-builder and virt-sysprep.

(cherry picked from commit 6a1061663fa467d43777a8ed98f4f07750125012)