Tests: running simple daemons supplied as coderef.

This will allow us to write and run fake backend servers as needed.  Daemons
are stopped by SIGTERM when test terminates.
diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm
index 1aeae8f..1f9e300 100644
--- a/lib/Test/Nginx.pm
+++ b/lib/Test/Nginx.pm
@@ -64,16 +64,26 @@
 
 	sleep 1;
 
+	$self->{_started} = 1;
 	return $self;
 }
 
 sub stop() {
 	my ($self) = @_;
 
-	# terminate nginx by SIGTERM
-	kill 15, `cat $self->{_testdir}/nginx.pid`;
+	while ($self->{_daemons} && scalar @{$self->{_daemons}}) {
+		my $p = shift @{$self->{_daemons}};
+		kill 'TERM', $p;
+		wait;
+	}
+
+	return $self unless $self->{_started};
+
+	kill 'TERM', `cat $self->{_testdir}/nginx.pid`;
 	wait;
 
+	$self->{_started} = 0;
+
 	return $self;
 }
 
@@ -96,6 +106,23 @@
 	return $self->write_file($name, $content);
 }
 
+sub run_daemon($) {
+	my ($self, $code) = @_;
+
+	my $pid = fork();
+	die "Can't fork daemon: $!\n" unless defined $pid;
+
+	if ($pid == 0) {
+		$code->();
+		exit 0;
+	}
+
+	$self->{_daemons} = [] unless defined $self->{_daemons};
+	push @{$self->{_daemons}}, $pid;
+
+	return $self;
+}
+
 ###############################################################################
 
 sub log_out {